我有一个 ./file.txt
是:
Lorem ipsum
dolor sit
amet
我希望相同的 ./file.txt
是:
dolor sit
amet
我不关心任何其他方式的文件;我不会对它做任何进一步的操作或类似的事情。我只想去掉第一行。
std::fs::write
覆盖文件的全部内容。我假设我需要将整个文件读入一个字符串,从字符串的开头删除所有内容,直到找到一个新行(以某种方式),然后用该新字符串覆盖整个文件。虽然也许只有我一个人,但所有这些都感觉有点矫枉过正。我不关心文件的全部内容。
我问的原因是因为我根本不知道该怎么做,尤其是如果有更好的方法来处理这整件事的话。如果有一个明显简单的答案那就太好了。
This question已回答 Rust 1.0,它已经过时,以至于 BufReader.lines()
不再存在。
最佳答案
做了更多研究,这是我最终得到的最接近的结果。
我不知道这是否是最优的,并且我不完全确定这会保留文件的格式(尽管我认为它会保留)。我也认为可能有更好的加载文件的方法。我不知道很多事情。
但它有效吗?
use std::{fs, fs::File, fs::OpenOptions};
use std::io::{BufReader, BufRead, Write};
fn main() {
let mut file = OpenOptions::new()
.read(true)
.write(true)
.open("./file.txt")
.expect("file.txt doesn't exist or so");
let mut lines = BufReader::new(file).lines().skip(1)
.map(|x| x.unwrap())
.collect::<Vec<String>>().join("\n");
fs::write("./file.txt", lines).expect("Can't write");
}
关于string - 如何在 Rust 中删除文本文件的第一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62762204/