C#只读取特定行而不逐行读取

时间:2013-08-28 08:52:03

标签: c# large-files

我一直在谷歌搜索最后一小时,但无法找到答案。

我有一个大文本文件(1GB),我也有一个文件,所有这些都已映射,所以我知道在第x行到第y行它包含我所追求的数据。

我的问题是如何在不迭代文件中的所有行的情况下,只采用我感兴趣的行?

我有兴趣这样做的主要原因是出于性能原因,我想将行503,432行504,432比从行1到504,432循环更快找到这些行。

任何提示非常感谢

2 个答案:

答案 0 :(得分:0)

如果您要查找特定的行号,则无论如何都需要读取所有行来计算它们。除非行是固定长度,否则不能在不读取文件的情况下计算行数。阅读时不需要保存行。只保存您需要的亚麻布,或者处理它们而不将它们留在记忆中供以后使用。

答案 1 :(得分:0)

我认为这是一个过早优化的案例。 我正在使用FileHelpers AsyncEngine处理~6GB文件,并且“读取文件”部分并不是过程中最慢的部分。

首先读取500k行并且什么也不做,需要多长时间?你要节省多少时间?