c#.net中的文件处理

oli*_*ive 1 .net c#

有一系列我想做的事情.我有一个表单应用程序.

1)转到特定的行.我知道如何以连续的方式进行,但是有什么方法我可以跳到特定的行号.

2)找出总线数

GvS*_*GvS 5

如果文件不是太大,您可以尝试ReadAllLines.

这会将整个文件读入字符串数组,其中每一行都是数组的一个元素.

例:

var fileName = @"C:\MyFolder\MyFileName.txt";
var contents = System.IO.File.ReadAllLines(fileName);

Console.WriteLine("Line: 10: " + contents[9]);
Console.WriteLine("Number of lines:");
Console.WriteLine(contents.Lenght);
Run Code Online (Sandbox Code Playgroud)

但请注意:这会将整个文件读入内存.

如果文件太大:

打开文件(OpenText),并创建一个Dictionary来存储每一行​​的偏移量.扫描每一行,并存储偏移量.现在你可以去每一行,你就有了行数.

var lineOffset = new Dictionary<int, long>();
using (var rdr = System.IO.File.OpenText(fileName)) {
   int lineNr = 0;
   lineOffset.Add(0,0);
   while (rdr.ReadLine() != null)) {
       lineNr++;
       lineOffset.Add(lineNr, rdr.BaseStream.Position);
   }

   // Goto line 10
   rdr.BaseStream.Position = lineOffset[10];
   var line10 = rdr.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)