从大文件中获取数据

时间:2016-03-17 07:00:48

标签: c# file

我有一个差不多~215 MB的文件,它的数据格式如下:

<Something>
....
 <Document>
  </Document>
...
</Something>

现在我想获取Document之间的数据块。我创建了一个正则表达式如下:

@"<DOCUMENT></DOCUMENT>"

如何从大文件中获取大量数据以获得上述数据:

我尝试使用StreamReader,但我不确定什么是最好和最快的方式。

1 个答案:

答案 0 :(得分:1)

这是一段简单的代码,可以满足您的需求。

它会:

  1. 逐行读取文件(因此不会将215MB读入内存)
  2. 它将自己收集每个块,然后输出它&#34;到达块的末尾时
  3. 以下是代码:

    bool inDocument = false;
    var chunk = new List<string>();
    foreach (var line in File.ReadLines(@"D:\Temp\largefile.txt"))
    {
        switch (line.Trim())
        {
            case "<Document>":
                inDocument = true;
                break;
    
            case "</Document>":
                inDocument = false;
                if (chunk.Count > 0)
                {
                    // Output chunk
                    chunk.Clear();
                }
                break;
    
            default:
                if (inDocument)
                    chunk.Add(line);
                break;
        }
    }