我需要替换一个非常大的文件中的一行,所以我不想readAll和writeAll - 我想到达需要替换,替换和关闭文件的行。 知道如何在C#中做到这一点吗?
谢谢!
答案 0 :(得分:8)
真的,你有两个选择,第一个有一些严格的限制,第二个是最简单的,可能是你想要的。
第二个选项是很多更简单,可能更快(你需要配置文件以确定),并且它没有新行完全相同的长度作为旧的限制。
选择选项2
P.S。摆脱使用ReadAll
WriteAll
函数的习惯,它们对现实世界的应用程序不利。 “读一行,处理一行”成语同样适用于100k和100TB的文件。 。 。 100TB文件显然需要更长的时间:)
P.P.S虽然选项1听起来很直接,但实际上很难正确实现,有100个小问题可能出错。可变字节大小,不同编码等。选项2听起来很简单。
答案 1 :(得分:3)
简短回答:你没有。 从一个文件读取并写入另一个文件会更容易,更快。
答案 2 :(得分:-1)
如果您的新字符串与旧字符串的长度相同,则可以将其写入相应的文件位置。如果它更短,你可以通过用空格扩展它来“破解”它...但如果它更长,你必须从该位置重写文件到结尾(文件的开头保持不变)。另一方面,如果你必须替换的部分非常大,将替换文件流式传输到另一个文件确实更快。