我正在将事件从我的QT应用程序手动记录到文本文件中。
我一直在跟踪写入文本文件的行数,当超过一定数量时,我要开始删除第一行。
当文本文件变大时,我不希望每次删除第一行时都打开并阅读整个文本文件。
这是我到目前为止所拥有的:
if (file.open(QIODevice::Append)) {
QTextStream stream(&file);
stream << timeStamp+typeStamp+" "+message << endl;
stream.flush();
file.close();
LOG_COUNT++;
} else {
qWarning()<<"Utils::writeToLog - unable to write to log file";
}
if(LOG_COUNT > 5000){
LOG_COUNT--;
QFile inputFile(filename);
if (inputFile.open(QIODevice::ReadWrite))
{
QTextStream in(&inputFile);
QString line1 = in.readLine();
QString line2 = in.readLine();
qWarning()<<"LINE 1 "<<line1;
qWarning()<<"LINE 2 "<<line2;
//Replace line 1 & 2 with just line 2?
inputFile.close();
}
}
答案 0 :(得分:3)
如果不创建临时文件,则无法从文件开头剪切某些内容。
所以
或
[*]使用QTextStream :: readLine()或读取字节,直到找到'\ n'或'\ r',具体取决于您的平台。