使用rust编写文件时写入的额外行



我有一个struct Point {x: f64, y: f64}。我还有一个线段向量Vec<(Point, Point)>

我正在写一个像这样的文件的行集合。

let lines = make_lines();
let mut file = OpenOptions::new()
.write(true)
.create(true)
.open("./points1")
.unwrap();
for (p1, p2) in lines {
writeln!(file, "{} {} {} {}", p1.x, p1.y, p2.x, p2.y).unwrap();
}

向量总是有1000行。但是文件有时会写入10001,10002行。此外,可能与此相关的是,这些额外的行有时有3个数字。

如果该文件不存在,则创建该文件,如果存在则覆盖该文件。

  1. 您可能缺少.truncate(true),我不确定光标位置是什么,否则打开现有文件

  2. 文件绝对应该有10001行,因为writeln将总是添加一个尾随换行符,您将有一个最后的空行,这是预期的(对于unix文件来说是正常的)

如果没有复制情况,就没有什么可说的了,您可以尝试显式地刷新/同步写操作以确保它们在磁盘上,但显然您不会丢失数据。

最新更新