1

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

感谢您的任何帮助,不胜感激.. :)

4

3 回答 3

3

关闭文件并再次打开它或重置读取指针。

由于您要同时对其进行编辑,因此很可能需要在读取之间关闭它。

于 2012-10-11T08:58:20.547 回答
2

如何关闭文件并因此重新调整 i/o 源?

于 2012-10-11T08:59:38.283 回答
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 是在文件被另一个程序打开时等待的天真尝试。

于 2012-10-11T09:05:12.397 回答