Linux C ++ Qt fix" QIODevice :: write:ReadOnly device"?

时间:2017-05-17 16:10:55

标签: c++ linux qt qobject qfile

所以问题是,我正在尝试使用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中的文件读取和写入?

由于

1 个答案:

答案 0 :(得分:2)

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);