QT 使用共享访问打开文件

标签 qt file io

我正在寻找一种跨平台的方式来打开文件,以便其他应用程序可以读取和写入文件。 Windows 的 API 具有以下功能: http://msdn.microsoft.com/en-us/library/y973b725(v=vs.110).aspx (文件共享参数)

有什么方法可以用 QT 以跨平台的方式完成这个任务吗?

谢谢:)

最佳答案

应用程序是跨平台的,或者您需要访问跨平台机器?

如果“应用跨平台”你可以尝试:

不幸的是,我没有找到适合此任务的“跨平台”“源代码”,我可以向您推荐一种访问 Windows 计算机(或支持 samba)的方法。

#include <QMessageBox>

...

QString file;

#ifdef Q_OS_LINUX
    //app compiled in Linux (requires samba)
    file = "smb://PC/folder/file.txt";
#endif
#ifdef Q_OS_WIN32
    //app compiled in Windows (x86)
    file = "\\\\PC\\folder\\file.txt"; // "\\PC\FOLDER\filer.txt"
#endif

QFile test(file);
if (test.exists()){
    QMessageBox::about(NULL, "1", "exists");
} else {
    QMessageBox::about(NULL, "1", "not exists");
}

针对不同平台的定义:

Q_OS_DARWIN64
Q_OS_DARWIN32
Q_OS_ANDROID
Q_OS_LINUX
Q_OS_CYGWIN
Q_OS_WIN32
Q_OS_WIN64
Q_OS_WINCE
Q_OS_WINPHONE
Q_OS_WINRT
Q_OS_SOLARIS
Q_OS_HPUX
Q_OS_ULTRIX
Q_OS_RELIANT
Q_OS_NACL
Q_OS_FREEBSD
Q_OS_FREEBSD_KERNEL
Q_OS_BSD4
Q_OS_NETBSD
Q_OS_OPENBSD
Q_OS_BSDI
Q_OS_IRIX
Q_OS_OSF
Q_OS_AIX
Q_OS_LYNX
Q_OS_HURD
Q_OS_DGUX
Q_OS_QNX
Q_OS_DYNIX
Q_OS_SCO
Q_OS_UNIXWARE
Q_OS_INTEGRITYQ_OS_VXWORKS

如果你想访问不同的机器:

我可以告诉你的是,你必须检测机器上打开的“端口”(测试它),访问是通过“端口”进行的。

关于QT 使用共享访问打开文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21934079/

相关文章:

java - 在本地安全地保存密码java?

java - MalformedInputException 与 Files.readAllLines()

Rust:将标准输出写入缓冲区或字符串

c++ - fstream 未创建文件名后附加了 asctime 值的文件

将 Android Studio 升级到 2.0 后,Android 模拟器无法在 Ubuntu 上运行 - 找不到 Qt 库

c++ - Qt 5.5 与 qmake : Linker cannot resolve OpenGL function calls

qt - 如何在 Linux 上运行 qtcreator?安装了2个版本

c# - 如何在 .Net Core 中读取/写入文件?

c++ - 使用 Qt 播放实时视频流

java - 在 Java 程序之间共享 I/O