使用QT,如何在不读取整个文件的情况下删除文本文件中的第一行
Using QT how can I remove the first line in a text file without reading the entire file?
我正在手动将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();
}
}
如果不创建临时文件,就无法从文件的开头剪切内容。
所以
- 或者将整个文件作为QString/QByteArray读取,剪切第一行*并将其写回
或
- 打开文件,找到第一行末尾的偏移量*并关闭文件,然后再次打开文件,将剩余字节写入临时文件,并将其重命名为原始文件
[*]根据您的平台,使用QTextStream::readLine()或读取字节,直到找到'\n'或'\r'。
相关文章:
- 文本文件中的单词链表
- 在C++程序中输入的文本文件将不起作用,除非文本被复制和粘贴
- 如何将内容数组写入文本文件?
- 无法通过空白将文本文件行分隔为矢量
- 我正在使用嵌套的while循环来解析具有多行的文本文件,但由于某种原因,它只通过第一行,我不知道为什么
- C++将文本文件中的数据读取到结构数组中
- 在指针的帮助下,文本文件中单词的频率
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- 将值从二维数组输出到文本文件
- 如何使用 c++ 实现并发文件/文本编辑?
- 我需要转换一些代码,以便它适用于输入和输出文件文本
- 通过套接字发送二进制文件.文本文件有效,其他文件无效
- 将大型数据文件拆分为多个小文件(文本格式)
- 如何读取输入文件(文本文件)并将输入验证为有效整数
- 从文本文件/文本流中读取Q字符串错误
- 从文本文件(文本解析器)C++中读取行和列的逻辑
- 如何将*.css文件(文本文件)的内容与附加信息存储在新文件中?
- 关于内存映射文件和使用大文件文本编辑器
- 如何在读取文件文本时跳过"n"
- 使用libzip从.zip获取文件(文本除外)