c/c++ qt如何快速的解析(300MB-1G)大文件

 第一个QTextEdit显示行号,第二个QTextEdit分页显示文件内容.

源码:

 (包含测试用的大文本文件)

(18条消息) QTextEdit显示全部的数据会直接卡死,文件映射后,使用mmap对大文件分页显示资源-CSDN文库

背景:

项目中需要解析1千万多行的文本数据,并显示在QTextEdit中,如果直接读取,直接显示会导致软件非常卡,并且占用非常大的内存。

思路:

在开始实现前,我们最好有一个清晰的思路,可以建个简单的模型:

                                                                              图1

        因此需要优化四个方面:

        (1)如何快速的解析文件的每一行。

        (2)QTextEdit显示全部的数据会直接卡死,如何分页显示,只显示屏幕可见的那一部分数据。   自定义QScrollbar,按照百分比显示

          (3) 分页显示,需要先建立文件映射,建立文件的每一行首地址直接映射到内存空间或者硬盘的存储空间,如何快速的匹配换行符位置。

 参考:

(18条消息) KMP、BM、Sunday、Horspool、strstr字符串匹配算法的性能比较_MK_夕阳的博客-CSDN博客

        (4)文件映射后,可以使用mmap对大文件只读取需要显示的部分,而不需要全部读取。

   mmap参考:

(18条消息) Qt——文件映射_qt文件映射_michael019的博客-CSDN博客

C++ QFile::map方法代码示例 - 纯净天空 (vimsky.com)

(18条消息) Qt超大文本文件读取_qt超大文件读写_偶是江湖中人的博客-CSDN博客

效果图:

显示文件的效果图:4千万行数据,打开软件,基本上没有卡顿。图2的QCustomText

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值