【问题标题】:Overwrite file after reading读取后覆盖文件
【发布时间】:2021-12-30 13:07:11
【问题描述】:

我有一个案例,当我需要读取文件数据,进行一些数据处理,并通过覆盖文件的内容将处理后的数据写入文件中。

我尝试将OpenOptionsreadwritetruncate 选项一起使用,但truncate 选项在我可以读取文件之前使文件为空,write 选项在文件末尾开始写入(附加)。

我尝试了一些方法,比如f.set_len,但是它在文件开头无缘无故地设置了一些不可读的字节,f.rewind只是将写入内容放在原始文件开始之前......

【问题讨论】:

    标签: file rust


    【解决方案1】:

    来自documentation

    pub fn write(&mut self, write: bool) -> &mut Self

    设置写访问选项。

    此选项为真时,将指示该文件应该是 打开后可写。

    如果文件已经存在,任何对它的写调用都会覆盖它的 内容,不截断它。

    您不应在写入文件时读取文件。您可能有一些选择:

    1. 完整阅读文件内容。关闭文件进程,再次打开读取。

    2. 读取文件、处理并写入另一个文件。完成后用新的覆盖原来的。

    【讨论】:

      猜你喜欢
      • 2016-06-11
      • 2013-03-14
      • 2021-12-07
      • 2014-12-01
      • 2021-02-10
      • 1970-01-01
      • 2011-04-28
      相关资源
      最近更新 更多