问:我如何反复从文件中读取数据?

时间:2012-10-11 08:56:18

标签: c++ qt

我有一个文件,我想一遍又一遍地阅读,以更新我的代码中的参数。但是使用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)。

感谢您的帮助,感谢.. :)

3 个答案:

答案 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是一个天真的尝试等待。