【发布时间】:2022-11-22 12:53:31
【问题描述】:
我需要检查文件是否可写,以便在用户尝试打开不可写的文件时显示警告消息。
我在 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。
抱歉,我无法共享文件进行测试。
【问题讨论】: