如何使用Qt检查文件夹是否可写

5

我想检查一个文件夹是否可写,以便可以弹出错误对话框。我试过以下代码:

QFileDevice::Permissions permissions_list = QFile( folderName ).permissions();

    if ( permissions_list && QFileDevice::WriteUser )
    {
    }

但它不能工作。无论是可写文件夹还是受限制的文件夹都一样。

1个回答

11

使用QFileInfo

QFileInfo my_dir(folderName);

if(my_dir.isDir() && my_dir.isWritable()){
    // Do something
}

但如果你使用的是Windows操作系统,要注意这个问题


1
我正在使用Windows,问题仍未解决。难道没有可行的跨平台解决方案吗?我要写入的文件太大了,无法等待它被缓存到内存中进行写入,然后再收到错误消息。我希望事先进行检查。 - azal
4
一种不太妥善的选择是创建一个空文件,你可以使用QTemporaryFile http://doc.qt.io/qt-4.8/qtemporaryfile.html它的优点是一旦关闭就会自动删除。 - bibi
看起来在Windows上可写仅意味着您可以更改其名称。这就是为什么“桌面”文件夹是只读的,但您仍然可以在其中创建文件的原因。(http://stackoverflow.com/questions/1089598/incorrect-qfileinfo-permissions-for-user-desktop-on-vista-64) - bibi
由于目前没有任何“干净”的解决方案,我将尝试按照@bibi的建议设置NTFS系统的标志,并让您知道。 - azal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接