如何避免用rust覆盖txt文件中的数据



嘿,所以我试图做一个小程序,我希望它有一些日志。问题是,它在for循环中运行,并不断覆盖写到它的旧数据。环顾四周,可能有一个修复".append()"但我似乎找不到让它工作的方法。如果我能得到一些帮助,那就太好了。

let download_dir = Path::new(download_dir);
fs::create_dir_all(download_dir).unwrap();
fs::rename(&path, download_dir.join(file_name)).unwrap();
let log_dir = "Logs";
fs::create_dir_all(log_dir).unwrap();
let mut file = std::fs::File::create("logs/Logs.txt").expect("create failed").append(true);

file.write_all(format!("{:?}", file_name).as_bytes()).expect("write failed");
file.write_all(format!(" Moved to ").as_bytes()).expect("write failed");
file.write_all(format!("{:?}n", download_dir.display()).as_bytes()).expect("write failed");

输出
"t3.png" Moved to "Pictures"

预计

"t1.png" Moved to "Pictures"
"t2.png" Moved to "Pictures"
"t3.png" Moved to "Pictures"

您需要以追加模式打开文件。您可以使用OpenOptions:

执行此操作。
let mut file = std::fs::OpenOptions::new()
.append(true)
.create(true)
.open("logs/Logs.txt")
.expect("create failed");

最新更新