【问题标题】:Linux C++ Qt fixing "QIODevice::write: ReadOnly device"?Linux C++ Qt 修复“QIODevice::write:ReadOnly device”?
【发布时间】:2017-05-17 16:10:55
【问题描述】:

所以问题是,我正在尝试使用 QFile 写入文件,但出现错误:

QIODevice::write: ReadOnly device

我的实现如下:

void logList::insert(QString data) {
    QString lin;
    QFile file1("log.data");
    file1.open(QIODevice::WriteOnly | QIODevice::Text);
    QTextStream out("log.data");
    lin = out.readLine();
    out << data;
    file1.seek(30);
    file1.close();
}

我也试过

QIODevice::ReadWrite 

对于 open()

system("chmod 777 log.data");

那么如何在 linux 中读取和写入文件呢?

谢谢

【问题讨论】:

  • 您的代码看起来有点奇怪。你有一个名为file1QFile,但你只有openseekclose 使用它——你从不写。

标签: c++ linux qt qobject qfile


【解决方案1】:
QTextStream out("log.data");

接受字符串的QTextStream 构造函数不会打开文件,也不会处理使用该名称打开的文件。

相反,您应该将QFile 对象传递给QTextStream

QTextStream out(&file1);

另外,如果你想从文件中读取,这是行不通的

file1.open(QIODevice::WriteOnly | QIODevice::Text);

您需要使用QIODevice::ReadWrite 标志,而不是QIODevice::WriteOnly

最后,如果你使用QTextStream而不是QFile的读/写函数,最好seek with the QTextStream,而不是QFile对象

out.seek(30);

【讨论】:

    猜你喜欢
    • 2018-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-19
    • 1970-01-01
    相关资源
    最近更新 更多