"就地"替换文件中的一行 - C#

Yos*_*ale 1 c# replace

可能重复:
通过C#编辑文本文件

我需要在一个非常大的文件中替换一行,所以我不想readAll和writeAll - 我想到达需要替换,替换和关闭文件的行.知道如何在C#中做到这一点?

谢谢!

Bin*_*ier 8

真的,你有两个选择,第一个有一些严格的限制,第二个是最简单的,可能是你想要的.

  1. 打开文件进行读写访问,逐行读取文件,记住刚刚读取的当前行的位置(StreamReader.BaseStream.pos).如果这是要替换的行,并且新行与旧行的长度完全相同,请返回行的开头并写入.
  2. 打开文件,读取每一行,写入新文件,不要写入要替换的行,而是写入新行.然后继续阅读和写作,直到完成.

第二个选项简单,可能更快(您需要配置以确定),并且它没有新行与旧限制完全相同.

选择2

PS摆脱使用ReadAll WriteAll函数的习惯,它们对现实世界的应用程序不利."读一行,处理一行"成语同样适用于100k和100TB的文件...100TB文件显然需要更长的时间:)

PPS虽然选项1听起来很直接,但实际上很难正确实现,有100个小问题可能出错.可变字节大小,不同编码等.选项2听起来很简单.