大型文本文件的按行选择性读取
问题:
如何从大型文本文件中读取并存储特定行,而不使用字符串数组?
背景:
提供的文本文件具有结构化格式:前 25 行包含信息,之后是数量可变的行(数量由第 17 行的值决定)。目标是从文件中提取并存储前 25 行作为独立值,并将后续行存储为数组。
解决方案:
.NET 4.0 方法:
如果使用 .NET 4.0 或更高版本,ReadLines
方法可以直接访问行。要读取第 15 行:
<code class="language-csharp">string line = File.ReadLines(FileName).Skip(14).Take(1).First();</code>
通用方法:
对于早期 .NET 版本或如果无法避免顺序读取行:
<code class="language-csharp">string GetLine(string fileName, int line) { using (var sr = new StreamReader(fileName)) { for (int i = 1; i <= line; i++) { if (sr.ReadLine() == null) return null; // 处理文件结尾 if (i == line) return sr.ReadLine(); } return null; } }</code>
此方法读取目标行之前的所有行。
注意:
通常情况下,不能假设可以删除前 n 行而无需重新读取和重写文件。但是,此处提供的解决方案不需要删除行。
以上是如何在不使用字符串数组的情况下高效地从大型文本文件中读取特定行?的详细内容。更多信息请关注PHP中文网其他相关文章!