我写了一个机器人,定期执行一些网络查询,并将最新状态转储到存储在磁盘上的文件中。这是我的代码:
问题在于,新状态JSON的大小偶尔会比先前状态JSON的大小小。这将使得先前状态JSON中长度大于新状态JSON的部分仍然留在日志文件中:
在上面的示例中,
问题是:我如何重写代码,以便首先刷新文件的所有内容,然后再写入新的状态JSON?
我知道删除文件是一种解决方案,但我不想这样做。
let log_file = OpenOptions::new()
.read(true)
.write(true)
.create(true)
.open(&log_file_name)
.unwrap();
serde_json::to_writer(
log_file,
&State {
foo: self.foo,
bar: self.bar
},
)
.unwrap();
问题在于,新状态JSON的大小偶尔会比先前状态JSON的大小小。这将使得先前状态JSON中长度大于新状态JSON的部分仍然留在日志文件中:
{"foo": 1,"bar": 2}"baz": 3}
在上面的示例中,
"baz": 3}
是先前状态JSON的剩余数据。问题是:我如何重写代码,以便首先刷新文件的所有内容,然后再写入新的状态JSON?
我知道删除文件是一种解决方案,但我不想这样做。