大文本文件查看器如何工作?如何构建一个大型文本阅读器

时间:2010-04-27 11:36:19

标签: c++ python qt multithreading pyqt

large text file viewer work怎么样?

我假设:

  • 线程用于处理文件
  • TextBox逐行更新
  • 使用有效的内存处理

这些假设是否正确?如果有人要发展自己,有什么必须做的事情?

我希望使用DataGrid而不是TextBox

来实现一个

我对C ++和python很满意。我可能会使用QT / PyQT

修改

我的文件通常在1.5到2 GB之间。我正在寻找编辑和查看这些文件

2 个答案:

答案 0 :(得分:6)

我认为诀窍不是将整个文件加载到内存中,而是使用seek等来加载被查看的部分(可能使用前后块来处理一些滚动)。也许甚至使用内存映射缓冲区,虽然我没有使用它们的经验。

要意识到修改大文件(快速)与查看它不同。您可能需要将编辑周围的千兆字节数据复制到新文件中,这可能很慢。

答案 1 :(得分:4)

在Kernighan和Plaugher的经典(古董?)书“Pascal中的软件工具”中,他们介绍了ed(1)版本的开发和设计选择以及注释

  

“警告:edit很重要   计划(不包括来自   translitfindchange;在   950线,它大50%   比起本书中的其他内容。“

他们(字面意思)甚至没有字符串类型可供使用。由于他们注意到要编辑的文件可能存在于tape,它不支持中间的任意写入,因此他们必须在内存中保留行位置索引并使用临时文件来存储更改,删除和添加,在“保存”命令上将整体合并在一起。他们和你一样,担心内存限制了他们可编辑文件的大小。

此方法的一般结构保留在GNU ed project中,尤其是buffer.c