【发布时间】:2016-05-25 00:37:21
【问题描述】:
我尝试使用 QFile 类从 Qt-widget 应用程序访问一个简单的文本文件以读取文字。逐行读取文件作为字符串可以正常工作。但是打开它准备写入失败。以下代码检查文件是否存在并尝试设置正确的权限,但最终文件将无法打开。 这是失败的代码:
#include "mainwindow.h"
#include <QApplication>
#include <QFile>
#include <QDebug>
int main(int argc, char *argv[]){
QApplication app(argc, argv);
MainWindow w;
w.show();
QFile file(":/test.dat");
qDebug() << "exists? " << file.exists();
qDebug() << "writable? " << file.isWritable();
qDebug() << "permissions before? " << file.permissions();
qDebug() << "permissions set? " << file.setPermissions(QFileDevice::WriteOther | QFileDevice::ReadOther);
qDebug() << "permissions after? " << file.permissions();
qDebug() << "opened? " << file.open(QIODevice::Append);
qDebug() << "errors? " << file.errorString();
qDebug() << "errnum? " << file.error();
QTextStream out(&file);
out << "something to append";
file.close();
return app.exec();
}
Qt 返回此消息:
exists? true
writable? false
permissions before? QFlags(0x4|0x40|0x400|0x4000)
permissions set? false
permissions after? QFlags(0x4|0x40|0x400|0x4000)
opened? false
errors? "Unknown error"
errnum? 5
QIODevice::write (QFile, ":/test.dat"): device not open
如果我将 open-function 中的参数更改为 QIODevice::ReadOnly,则该文件可以毫无问题地读取,但 QIODevice::WriteOnly 会失败。为什么同样的事情对写作也不起作用?是许可吗?为什么我打电话给setPermissions 后权限没有改变?我在 Ubuntu 14.04 上以 root 身份运行 Qt。并且test.dat 拥有用户拥有的全部权利-rwxrwxrwx。
有人可以帮忙吗?
谢谢!
【问题讨论】:
标签: qt file permissions