如何选择要在vb.net中读取的特定行?

时间:2014-09-07 14:13:40

标签: vb.net streamreader

我想知道是否/如何使用system.io.streamreader读取vb.net中的特定行。

Dim streamreader as system.io.streamreader
streamreader.selectline(linenumber as int).read
streamreader.close()

这是可能的,还是有类似的功能?

2 个答案:

答案 0 :(得分:1)

我使用File.ReadAllLines将行读入数组,然后只使用数组来选择行。

Dim allLines As String() = File.ReadAllLines(filePath)
Dim lineTwo As String = allLines(1) '0-based index

请注意,ReadAllLines会将整个文本文件读入内存,但我认为这不是问题,因为如果是,那么我建议您采取其他方法尝试跳转到特定行

答案 1 :(得分:0)

ReadLines非常快,因为它不会将所有内容加载到内存中。它返回一个IEnumerable<string>,可以让您轻松跳到一行。拿这个5GB文件:

var data = new string('A', 1022);
using (var writer = new StreamWriter(@"d:\text.txt"))
{
    for (int i = 1; i <= 1024 * 1024 * 5; i++)
    {
        writer.WriteLine("{0} {1}", i, data);
    }
}

var watch = Stopwatch.StartNew();
var line = File.ReadLines(@"d:\text.txt").Skip(704320).Take(1).FirstOrDefault();
watch.Stop();

Console.WriteLine("Elapsed time: {0}", watch.Elapsed); // Elapsed time: 00:00:02.0507396
Console.WriteLine(line); // 704320 AAAAAA...
Console.ReadLine();