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行.