读取文本文件而不占用内存的最佳方式

Best way to read text file without hogging memory

本文关键字:内存 最佳 方式 取文本 文件 读取      更新时间:2023-10-16

阅读文本文件的最佳方式是什么?例如,我有一个包含数百本书的文本文件。在这些书下面是作者等等,有些作者可以有多本书。

我该如何编写这个程序,以便在搜索或查找一条信息时不会将整个文件读取到内存中(数组、向量等)。假设我输入作者的名字,它就会找到他们写的每一本书。所以我很想知道最好的方法和最有效的方法。

我会在C++中对此进行编码

基本答案是FileStream。所以你在磁盘上的文件中寻找一个位置,然后从那里读取。然而,在这一点上,你将非常依赖磁盘io,你的文件必须符合某种结构,除非你想每次都从开始到目标进行读取。也就是说,它必须按作者顺序排列,即使可以接受,这也意味着搜索其他内容的效率将非常低。

解决问题的经典方法是索引文件。所以books.dat会有一个相关的authors.idx,它会说是一个作者和标题的列表,最好按作者排序。然后你就有了titles.idx,这就是标题,以及书在books.dat中开始的位置。文件中的下一个标题会告诉你这本书的长度。

当然,你必须维护这两个文件。如果应用程序不编辑文件,那么使用工具uo创建所需的索引将是一个很好的方法。