[英]QFile / QTextStream don't show error on delete file being written to
[英]Using QTextStream to read a file that is being written to?
我目前正在逐行讀取文件中的數據,就像這樣
readFile(QFile *file)
{
QTextStream in(file);
while(!in.atEnd())
{
// Do stuff
}
}
我需要擴展它以處理當前正在寫入的文件。 僅當N秒鍾內未將任何內容寫入文件時, while
循環才應退出。
這可以通過添加計時器和睡眠/等待循環,連續檢查我們是否仍在atEnd()
來輕松實現。 但是, 文檔尚不清楚,如果將新數據附加到文件中,則atEnd()
的返回值是否會更改。
如果我使用QTextStream
從正在寫入的文件中讀取, atEnd()
的返回值會准確反映文件內容的變化嗎?
atEnd()的返回值是否可以准確反映文件內容的變化?
您可以通過執行以下功能進行測試:
void FileReader::_appendFileTest()
{
QFile file("/home/cklein/appendFile");
file.open(QIODevice::ReadOnly);
QTextStream in(&file);
while(true)
{
while(!in.atEnd())
{
QString line = in.readLine();
qDebug() << line;
}
SleepThread::msleep(1000);
}
}
從此處獲取的SleepThread
代碼。 它只是公開受保護的QThread::msleep()
函數。
在應用程序運行時,在終端中鍵入
~ $ echo "foo" >> appendFile
~ $ echo "bar" >> appendFile
您可以看到,在不重置或重新打開文件的情況下,將文件附加到atEnd()
函數atEnd()
返回false
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.