QT打开文件,共享访问权限

时间:2014-02-21 12:06:50

标签: qt file io

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

有没有办法以跨平台的方式完成QT。

感谢:)

1 个答案:

答案 0 :(得分:2)

应用程序是跨平台的,还是需要访问跨平台的计算机?

如果“app跨平台”,您可以尝试:

不幸的是我没有发现这个任务的“跨平台”的“源”,我可以推荐你访问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

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

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