我正在使用以下代码在文件末尾添加新行:
let text = "New line".to_string();
let mut option = OpenOptions::new();
option.read(true);
option.write(true);
option.create(true);
match option.open("foo.txt") {
Err(e) => {
println!("Error");
}
Ok(mut f) => {
println!("File opened");
let size = f.seek(SeekFrom::End(0)).unwrap();
let n_text = match size {
0 => text.clone(),
_ => format!("\n{}", text),
};
match f.write_all(n_text.as_bytes()) {
Err(e) => {
println!("Write error");
}
Ok(_) => {
println!("Write success");
}
}
f.sync_all();
}
}
它有效,但我认为这太困难了。我找到了option.append(true);
,但是如果我使用它而不是option.write(true);
“ Write error”。
使用OpenOptions::append
是添加到文件的最清晰方法:
use std::fs::OpenOptions;
use std::io::prelude::*;
fn main() {
let mut file = OpenOptions::new()
.write(true)
.append(true)
.open("my-file")
.unwrap();
if let Err(e) = writeln!(file, "A new line!") {
eprintln!("Couldn't write to file: {}", e);
}
}
从Rust 1.8.0(commit)和RFC 1252开始,append(true)
意味着write(true)
。这不再是问题。
锈1.8.0之前,您必须使用两个 write
和append
-第一个允许你写字节到一个文件,第二个指定了字节将被写入。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句