6

可能重复:
如何在 .NET 中读取大 (1 GB) txt 文件?

C# 中读取文件、替换一些字符串并写入另一个新文件的最佳方式是什么?我需要对 8GB 或 25GB 等非常大的文件执行此操作。

4

3 回答 3

11

关于 I/O 没有太多可以优化的地方,大部分优化应该是在字符串比较上,以确定字符串是否应该被替换,基本上你应该这样做

protected void ReplaceFile(string FilePath, string NewFilePath)
{
   using (StreamReader vReader = new StreamReader(FilePath))
   {
      using (StreamWriter vWriter = new StreamWriter(NewFilePath))
      {
         int vLineNumber = 0;
         while (!vReader.EndOfStream)
         {
            string vLine = vReader.ReadLine();
            vWriter.WriteLine(ReplaceLine(vLine, vLineNumber++));
         }
      }
   }
}
protected string ReplaceLine(string Line, int LineNumber )
{
   //Do your string replacement and 
   //return either the original string or the modified one
   return Line;
}

您查找和替换字符串的标准是什么?

于 2012-04-13T20:12:45.583 回答
2

我之前做了200GB的文件。请使用 StreamReader 和 StreamWriter。

流阅读器

StreamWriter

于 2012-04-13T19:29:03.273 回答
1

是否有不太大的线条?如果是这样,您可以逐行读取文件,对该行进行替换,然后将该行写出到新文件中。由于它是流式传输的,因此只需要很少的内存。

于 2012-04-13T18:51:37.940 回答