逐块读取文本文件

时间:2012-01-18 12:50:09

标签: c# file-io

我正在使用C#.net

如何逐块读取文本文件,该块由换行符分隔。

块大小不固定,因此我无法使用StreamReader的ReadBlock方法。

是否有任何欧姆方法可以逐块获取数据,因为它是由换行符分隔的。

4 个答案:

答案 0 :(得分:3)

您可以使用StreamReader

using (var reader = File.OpenText("foo.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        // do something with the line
    }
}

此方法逐行读取文本文件(其中Environment.NewLine用作行分隔符)并且只在当前行中加载当前行,因此它可用于读取非常大的文件。

如果您只想在内存中加载小文本文件的所有行,也可以使用ReadAllLines方法:

string[] lines = File.ReadAllLines("foo.txt");
// the lines array will contain all the lines
// don't use this method with large files
// as it loads the entire contents into memory

答案 1 :(得分:0)

类似的东西:

using (TextReader tr = new StreamReader(FullFilePath))
{
  string Line;
  while ((Line = tr.ReadLine()) != null)
  {
    Line = Line.Trim();
  }
}

搞笑我前几天正在做一些文件i / o,并发现this在处理大分隔记录文本文件时非常有用(例如将记录转换为您自己定义的预定义类型)

答案 2 :(得分:0)

您可以查看StreamReader.ReadToEnd()String.Split()

使用:

string content = stream.ReadToEnd();
string[] blocks = content.Split('\n');//You may want to use "\r\n"

答案 3 :(得分:0)

您可以使用File.ReadLines方法

foreach(string line in File.ReadLines(path))
{
   //do something with line
}

ReadLines返回IEnumerable<string>,因此一次只能在内存中存储一​​行。