【问题标题】:FileStream Append Data at the topFileStream 在顶部追加数据
【发布时间】:2023-04-08 03:29:01
【问题描述】:

我正在开发一个实用程序。

我想在文件顶部追加数据,但它是覆盖而不是追加。

例如:考虑 file.txt :

这里有东西

现在我想在当前行之前附加“Something more existing here”。有没有办法不使用 2 FileStreams ?

【问题讨论】:

  • Cerebrus,我说得尽可能简单。我找到了乔恩的答案。谢谢。

标签: .net file-io filestream


【解决方案1】:

没有。文件系统基本上不支持向文件中插入数据——您要么在文件末尾追加,要么覆盖现有数据。至少,我不知道有任何文件系统支持,而标准 API 不支持。

要以任何其他方式更改文件,最好的方法是编写一个新文件,从您需要的旧文件中读取(在您的情况下,在编写前面的文本之后)。然后删除旧文件并将新文件重命名为与旧文件同名。

(更安全的版本包括重命名旧文件,然后重命名新文件,然后删除旧文件 - 这样可以在出现任何问题时进行恢复。)

【讨论】:

  • 谢谢乔恩。不过有点奇怪。谢谢,然后我将使用 2 个流。
【解决方案2】:

没有。文件不像文字处理器那样具有插入模式。

对不起,这不是你想听到的,而是事实。

【讨论】:

  • 啊....我基本上与 Jon Skeet 的响应时间和正确性捆绑在一起...我仍然输了。看看他的伟大。
【解决方案3】:

是的

FileStream fs = new FileStream(path2, FileMode.OpenOrCreate, FileAccess.ReadWrite);

sw = new StreamWriter(fs);

sw.BaseStream.Seek(0, 0);

sw.WriteLine("写新文本");

sw.close()

此方法将覆盖任何现有数据,类似于插入和替换。

【讨论】:

    猜你喜欢
    • 2013-02-08
    • 1970-01-01
    • 1970-01-01
    • 2018-04-03
    • 1970-01-01
    • 2013-04-04
    • 1970-01-01
    • 2013-05-13
    • 1970-01-01
    相关资源
    最近更新 更多