C# 以恒定时间覆盖文本文件的前几行

Pat*_*ick 3 c# text-files

我有一个文本文件:

FIRST LINE
SECOND LINE
THIRD LINE
...
Run Code Online (Sandbox Code Playgroud)

我想覆盖文件的第一行,例如。使用"2345" StreamWriter,我只能将文件覆盖为:

2345
Run Code Online (Sandbox Code Playgroud)

using (StreamWriter newWriter = new StreamWriter(playingFileDirectory, false)){ 
    newWriter.WriteLine("2345");
}
Run Code Online (Sandbox Code Playgroud)

或者

FIRST LINE
SECOND LINE
THIRD LINE
...
2345
Run Code Online (Sandbox Code Playgroud)

using (StreamWriter newWriter = new StreamWriter(playingFileDirectory, true)){ 
    newWriter.WriteLine("2345");
}
Run Code Online (Sandbox Code Playgroud)

然而我想要的结果是:

2345
SECOND LINE
THIRD LINE
...
Run Code Online (Sandbox Code Playgroud)

有没有快速的方法(线性时间)来做到这一点?我有一些文本需要在用户按下按钮时更新。数据库记录包含 100,000 行。我只想像在文本编辑器中一样更改第一行,但不想更改第一行并重写整个文件。

Pat*_*man 5

我不认为这是开箱即用的。我建议执行以下操作:

  • 打开输出文件进行写入;
  • 写下你的前几行;
  • 打开输入文件进行读取;
  • 读到您需要的行;
  • 从输入读取行并将其写入输出;
  • 关闭两者。

如果需要,可以先移动输入文件并将输出文件写入原始位置。

File.ReadAllLines如果文件很大,我建议不要使用。它会对你的记忆力产生巨大的影响。