Linux C++ Qt 修复“QIODevice::write:ReadOnly device”?
Posted
技术标签:
【中文标题】Linux C++ Qt 修复“QIODevice::write:ReadOnly device”?【英文标题】:Linux C++ Qt fixing "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 中读取和写入文件呢?
谢谢
【问题讨论】:
您的代码看起来有点奇怪。你有一个名为file1
的QFile
,但你只有open
、seek
和close
使用它——你从不写。
【参考方案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);
【讨论】:
以上是关于Linux C++ Qt 修复“QIODevice::write:ReadOnly device”?的主要内容,如果未能解决你的问题,请参考以下文章