QT QFile删除文件里的一行
昨天需要做一个日志文件删除历史记录功能,大致做完后思路如下:
1、以只读的方式打开日志文件,读入日志文件到QstringList链表
2、根据链表里的元素的时间数据项找到某个元素的索引,比如:
7 [2022-10-15 17:00:02] NOTICE
8 [2022-10-26 19:36:02] NOTICE
要删除10.26号之前的日志记录,索引位置找到8,删除链表里索引8之前的所有数据
3、关闭文件,重新以只写的方式打开。把修改之后的QstringList链表重新写入文件。
具体代码如下,写的不好还有优化的地方
void Log::delelte(int day) { QStringList dataList;//用来保存日志文件中所有数据记录 dataList.clear(); file->close(); file->open(QIODevice::ReadOnly); // file->open(QIODevice::ReadWrite); QTextStream in(file); //用来读文本 //1、读出所有 while(!in.atEnd()){ QString fileLine = in.readLine(); //读一行 dataList << fileLine; //把读到的每一行以QString的形式放到QStringList里 } //2、找到索引 int index = findIndex(day,dataList); //3、删掉索引之前不要的记录 for(int i=0;i<=index;++i){ dataList.removeFirst(); } file->close(); file->open(QIODevice::WriteOnly); QTextStream out(file); //用来读文本 //4、重新写进日志文件 for(int i=0;i<dataList.size();i++){ out<<dataList[i]<<"\n"; } }