2012-10-11 46 views
1

我有一個文件,我想一遍又一遍讀取,以更新我的代碼中的參數。但是使用QTextStream只讀取一次該值,然後每次讀出0。Qt,我如何反覆從文件中讀取數據?

這基本上是我的代碼:

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)謝謝您的幫助,可以理解的。 。:)

回答

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

的:

您可以修改的循環。

+0

這似乎是最讓人do,的,但數據充滿了狀態值,後面跟着一個換行符,這會使toInt()返回一個「0」... –

+0

如果您只想讀取一行,則更改readAll to readline ... – UmNyobe

+0

仍然返回這樣的一行: 這是狀態:「50 :: newline ::」 –

3

關閉文件並再次打開或重置讀取指針。

由於您要在此期間進行編輯,因此很可能需要在讀取之間關閉它。

2

如何關閉文件並因此重新設置I/O源?