【发布时间】:2015-10-24 22:06:03
【问题描述】:
您好,请给我一个示例,说明如何将文本文件通读到末尾并将每 5 行读取为字符串?我知道如何使用
读取文本文件中的特定行line = System.IO.file.readAllLines(filepath)(linenum)
并且还使用流读取器读取每一行等。
但我想浏览整个文本文件并挑选出每个特定数量的行。很确定它与循环有关,但我还不太清楚。
【问题讨论】:
标签: vb.net
您好,请给我一个示例,说明如何将文本文件通读到末尾并将每 5 行读取为字符串?我知道如何使用
读取文本文件中的特定行line = System.IO.file.readAllLines(filepath)(linenum)
并且还使用流读取器读取每一行等。
但我想浏览整个文本文件并挑选出每个特定数量的行。很确定它与循环有关,但我还不太清楚。
【问题讨论】:
标签: vb.net
由于文件不是基于行的,因此您需要阅读所有行并挑选出您想要的行。
您可以使用 Where 方法和为您提供项目索引的重载,并使用 Mod 运算符来确定每五行的位置:
Dim lines As String() = _
System.IO.File.ReadLines(filepath).Where(Function(line, i) i Mod 5 = 0).ToArray()
您比较表达式以确定您获得哪些行的数字。 i Mod 5 = 0 从第一行开始,然后从那里每隔 5 行开始,而i Mod 5 = 4 从第 5 行开始,然后从那里开始每隔 5 行。
(ReadLines 方法比 ReadAllLines 更好,因为它不会先将所有行读入内存,而是返回一个枚举器,以便您可以在读取行时对其进行处理。)
【讨论】:
(i + 1) Mod 5 = 0吗?
ReadLines 与ReadAllLines 的补充是正确的,但完全被ToArray 的使用所击败,ToArray 将在“现场”急切地处理操作
ToArray 只会将最终结果实现为数组,它不会导致文件中的所有行在处理之前都被读入内存.