呆头鹅成长记 2021-02-19 14:03 采纳率: 0%
浏览 482

qt中如何读取文件最后一行数据?

不用从文件开头一行行遍历的方法,如何读取文件最后一行数据?

  • 写回答

1条回答 默认 最新

  • CAICAI134 2021-02-19 14:29
    关注

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

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

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

    这也是我在https://www.rsxedu.com/渊博吧学习的,可以看看

    目标文本文件最后一行如下:

    [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
    }
    }
    评论

报告相同问题?

悬赏问题

  • ¥15 有偿求苍穹外卖环境配置
  • ¥15 代码在keil5里变成了这样怎么办啊,文件图像也变了,
  • ¥20 Ue4.26打包win64bit报错,如何解决?(语言-c++)
  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,