广东省建设工程金匠奖公布网站,wordpress 多条件过滤,岳阳网站建设,环球军事最新消息Qt 使用如下函数能够判断路径或者文件是否可写#xff1a;
bool QFileInfo::isWritable() const 对于win10系统实测#xff0c;结果不准确。继续排查#xff0c;官方文档描述#xff1a;a#xff09;如果未启用 NTFS 权限检查#xff0c;Windows 上的结果将仅反映文件是… Qt 使用如下函数能够判断路径或者文件是否可写
bool QFileInfo::isWritable() const 对于win10系统实测结果不准确。继续排查官方文档描述a如果未启用 NTFS 权限检查Windows 上的结果将仅反映文件是否标记为只读。b在 NTFS 文件系统上出于性能原因所有权和权限检查默认是禁用的。错误原因NTFS限制。 打开NTFS限制 在NTFS 文件系统上出于性能原因所有权和权限检查默认是禁用的。要启用它请包含以下行
extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
// 你的测试代码...
qt_ntfs_permission_lookup; // turn checking on
qt_ntfs_permission_lookup--; // turn it off again
示例代码
#include QtCore/QCoreApplication
#include QDebug
#include QFileInfoextern Q_CORE_EXPORT int qt_ntfs_permission_lookup;int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);qt_ntfs_permission_lookup;QFileInfo info(C:/Windows/System32);qDebug() info.absoluteFilePath();qDebug() info.isWritable(); // falseqt_ntfs_permission_lookup--;return a.exec();
}
方法三使用QTemporaryFile判断目标路径是否可写 在判断一个目标路径是否可写时QFileInfo的isWritable()并不好用一般我们会基于QFile尝试在目标路径新建一个临时文件通过判断文件是否创建成功间接判断目标路径是否可写。 如果自己实现这个逻辑需要做文件打开关闭删除等一系列的处理可以借助QTemproryFile类实现同样的目的。
bool IsDirWritable(const QString dir)
{QTemporaryFile testFile(dir \XXXXXX);return testFile.open();
} 参考文章
1、Qt检查路径(目录)或文件特别是NTFS文件系统是否可写
Qt检查路径(目录)或文件特别是NTFS文件系统是否可写_qt 读写权限查询_cn_newer的博客-CSDN博客
2、QFileInfo在Windows上获取文件权限错误的解决方法
QFileInfo在Windows上获取文件权限错误的解决方法_qfile open失败_麦糠包的博客-CSDN博客
3、如何使用Qt检查文件夹是否可写
如何使用Qt检查文件夹是否可写 | 那些遇到过的问题