如何读取,替换和写入非常大的文件?

时间:2012-04-13 18:46:15

标签: c#

  

可能重复:
  How to read a large (1 GB) txt file in .NET?

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

3 个答案:

答案 0 :(得分:7)

关于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;
}

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

答案 1 :(得分:2)

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

StreamReader

StreamWriter

答案 2 :(得分:1)

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