繁体   English   中英

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

[英]How do you select the specific line to read in vb.net?

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

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

这可能吗?或者有类似功能吗?

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

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

请注意, ReadAllLines会将整个文本文件读入内存,但是我认为这不是问题,因为如果是这样,那么我建议您采用另一种方法来尝试跳至特定行。

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();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM