我需要检查文件是否可写,以便在用户试图打开不可写的文件时显示警告消息。
我在QT论坛上找到了以下检查文件是否可写的示例:
const QFileInfo info(fileName);
if (info.permission(QFile::WriteOwner | QFile::WriteGroup | QFile::WriteUser)) {
qDebug() << "File is writable";
} else {
qDebug() << "Read Only file";
}
// Or even simpler:
if (info.isWritable()) {
qDebug() << "File is writable";
} else {
qDebug() << "Read Only file";
}
但不幸的是,上面的例子只适用于文件具有只读属性的情况,例如(这个文件是简单的txt,我将其标记为只读):
我在QT论坛上发现我应该先看看文件权限。所以,正如你所看到的,我的文件不是只读文件(这是我正在工作的真实的文件的权限)。
如果我转到文件属性的安全部分,我会意识到该文件只有读取和执行权限,当然没有写入权限。
我尝试用下面的代码获取文件权限,但似乎不起作用。
QFileDevice::Permissions p = QFile(fileName).permissions();
if (p & QFileDevice::ReadOwner)
{
qDebug() << "Read file";
}
if (p & QFileDevice::WriteOwner)
{
qDebug() << "Write file";
}
if (p & QFileDevice::ExeOwner)
{
qDebug() << "Exec file";
}
输出:
Read file
Write file
我尝试了另一个变体,如writeUser,但得到了相同的结果。
任何想法或建议。
我使用的是Windows 10。
很抱歉,我无法共享用于测试的文件。
1条答案
按热度按时间unhi4e5o1#
我不熟悉Qt,但可以使用
std::filesystem
来实现:您也可以使用八进制值建立
filesystem::perms
:有关不同
perms
可用值的更多信息:https://en.cppreference.com/w/cpp/filesystem/perms