逐行处理和更新大文件

时间:2011-02-10 14:06:49

标签: c# file file-io batch-processing

所以我正在处理一个200 mb的txt文件,我必须读取文件中的每一行更新一两列然后保存它们。实现同样目标的最佳途径是什么?

我正在考虑将装货装入一个数据表但是在内存中保存那么大的文件是一件很大的痛苦。

我意识到我应该分批进行,但实现同样目标的最佳途径是什么?

我不认为我想首先加载到dB我不能进行大规模更新。我也必须一行一行地阅读。

就像更新一样,我的文件基本上都有任何顺序的列,我需要一直更新两列或更多列。

感谢。

2 个答案:

答案 0 :(得分:3)

读取一行,解析它,并将字段写入临时文件。完成所有行后,删除原始文件并重命名临时文件。

答案 1 :(得分:1)

添加蚂蚁所说的......

你有选择......

  • 逐行:

    StreamReader fileStream = new StreamReader( sourceFileName );
    StreamWriter ansiWriter = new StreamWriter( destinationFileName,  
      false, Encoding.GetEncoding( 20127 ) );  
    string fileContent;  
    while ( ( fileContent = fileStream.ReadLine() ) != null )  
    {  
        YourReplaceMethod( fileContent );  
        ansiWriter.WriteLine( fileContent );  
    }
    fileStream.Close();  
    ansiWriter.Close();  
    
  • 批量(今天的盒子应该可以处理200MB的w / o问题):

    byte[] bytes = File.ReadAllBytes( sourceFileName );
    byte[] writeMeBytes = YourReplaceMethod( bytes );
    File.WriteAllBytes( destinationFileName, writeMeBytes );