我正在使用此代码将新行附加到文件的末尾:
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();
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,但我认为这太难了.我找到了option.append(true);,但如果我使用它而不是option.write(true);我得到"写错误".
She*_*ter 27
使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
从Rust 1.8.0(提交)和RFC 1252开始,append(true)暗示write(true).这不应该是一个问题.
锈1.8.0之前,您必须使用两个 write和append-第一个允许你写字节到一个文件中,其中字节将被写入第二个指定.
| 归档时间: |
|
| 查看次数: |
6463 次 |
| 最近记录: |