如何在c#中指定的行后读取文本文件

Pra*_*nav 0 c# file-handling text-files filereader

我有一个巨大的文本文件,我需要阅读.目前我正在阅读这样的文本文件..

string[] lines = File.ReadAllLines(FileToCopy);
Run Code Online (Sandbox Code Playgroud)

但是这里所有的行都被存储在行数组中,然后根据条件正在编程处理,这是没有效率的方式,因为它首先将文本文件的不相关的行(行)读成数组,同样的方式将去用于处理.所以我的问题是我可以把行号从文本文件中读取.假设上次读取10001行,下次应该从10002开始.如何实现呢?

Jon*_*eet 11

那么你不必存储所有这些行 - 但你必须阅读它们.除非行具有固定长度(以字节为单位,而不是字符),否则您希望能够跳到文件的特定部分?

要仅在内存中存储所需的行,请使用:

List<string> lines = File.ReadLines(FileToCopy).Skip(linesToSkip).ToList();
Run Code Online (Sandbox Code Playgroud)

请注意,这File.ReadLines()是在.NET 4中引入的,并使用迭代器按需读取行,而不是将整个文件读入内存.

如果您只想处理一定数量的行,也可以使用Take:

List<string> lines = File.ReadLines(FileToCopy)
                         .Skip(linesToSkip)
                         .Take(linesToRead)
                         .ToList();
Run Code Online (Sandbox Code Playgroud)

例如,linesToSkip=10000并且linesToRead=1000会给你10001-11000行.