我有一个文件,我想一遍又一遍地阅读,以更新我的代码中的参数。但是使用QTextStream只读取一次值,然后每次读出0。
这基本上是我的代码:
int main(){
QString data;
QFile Status;
Status.setFileName("/home/user/status");
Status.open(QIODevice::ReadOnly);
QTextStream in(&Status);
While(1){
usleep(100);
data = in.readLine();
cout << "This is the status: " << data.toInt();
}
return 0;
}
问题是它第一次正确读取“状态”文件,但在此之后,它会读出“0”......任何关于如何一次又一次读出此文件的想法。
在其他信息中,我的想法是更改文件的数据以更新我的应用程序状态,这是0到100之间的数字(int)。
感谢您的帮助,感谢.. :)
答案 0 :(得分:3)
关闭文件并再次打开或重置读指针。
由于您要同时编辑它,因此很可能需要在读取之间将其关闭。
答案 1 :(得分:2)
如何关闭文件并因此重新启动i / o源?
答案 2 :(得分:1)
你的代码没有意义。如果您已成功打开该文件,则没有人可以打开它进行写入。
您可以修改循环:
While(1){
usleep(100);
if(status.open(QIODevice::ReadOnly) ){
QbyteArray data = status.readline();//edited
status.close();
//read the first line (without newline)
QString valueString = QString(data).section(0, '\n');
cout << "This is the status: " << data.toInt();
}
}
如果文件是由另一个程序打开的话,if是一个天真的尝试等待。