Chinaunix首页 | 论坛 | 博客
  • 博客访问: 308756
  • 博文数量: 45
  • 博客积分: 1429
  • 博客等级: 上尉
  • 技术积分: 422
  • 用 户 组: 普通用户
  • 注册时间: 2010-01-19 09:12
文章分类

全部博文(45)

文章存档

2021年(1)

2020年(1)

2019年(1)

2016年(4)

2015年(3)

2011年(4)

2010年(31)

我的朋友

分类: LINUX

2010-06-30 10:33:34

使用Qt读取大文件最后一行

589 views, Qt, by Allen Dang.

正在写的一个小软件需要这样一个功能,在开始一个新的下载任务前,先尝试在本地寻找是否已经存在同名文件。如果有,那读取文件最后一行 文本,这行文本里面记录了上次下载的一些信息,然后从断点开始继续下载。

最后一行文本的格式很简单,就是[页码|行号],例如[160|8]就代表160页第8行。

读取的基本思路就是,先把文件指针移动到距离文件尾部20个字节的地方(这里留20个字节是因为我的最后一行信息很简单),然后循环读取每一行,最 后一次读取到的就是最后一行文本。

目标文本文件最后一行如下:
[160|8]
具体代码如下:
QFile file("C:\\test.txt");
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
{
qint64 len = file.size();
 
QTextStream reader(&file);
QString lastLine;
if (reader.seek(len-20))
{
while (!reader.atEnd())
{
lastLine = reader.readLine();
}
}
 
file.close();
 
QRegExp re("\\[(\\d+)\\|(\\d+)\\]");
if (re.indexIn(lastLine, 0) != -1)
{
QString page = re.cap(1); //page = 160
QString pos = re.cap(2); //pos = 8
}
}

阅读(8394) | 评论(0) | 转发(0) |
0

上一篇:Makefile中添加gdb调试信息

下一篇:UI与QT

给主人留下些什么吧!~~