如果StreamWriter有一个自动更新输出,如某些列表:
Cute cat.
Angry dog.
Huge elephant.
Eternal sunshine.
或
1
2
3
4
如何强制StreamWriter在一个行中编写此列表?狗覆盖猫,大象覆盖狗,阳光覆盖大象等。因此,我们可以看到.txt中只有一行更改,不是控制台!
所有控制台。()偏差解决了仅限控制台中的问题,但.txt文件会依次收集新字符串。
答案 0 :(得分:1)
与答案here类似,您希望每次编写时重置文件流
public void OverwriteFile(Stream writer, string text)
{
writer.BaseStream.Seek(0,0);
writer.BaseStream.SetLength(Encoding.UTF8.GetBytes(text).Length));
writer.Write(text);
writer.Flush();
}
完成写入后,请处理流。
答案 1 :(得分:0)
具有讽刺意味的是,可以做的所有流都会被覆盖,这就是无法获得所需内容的原因。
你真正想要的是删除/插入字符,并让文件中的其余字节重新排列,但这不是流的工作原理(特别是基于磁盘的文件和网络I / O都不会突然改变它们在溪流中间的长度)。
您有两种方法: