这个程序的目的是获取一个文件的模板(内容),并将其应用于目录中以}B开头的所有文件。
下面的代码在我的IDE和终端(cargo run)中编译,错误为:一个月一个月一个月一个月
错误显示在file.write_all()行的apply_template函数中。
Cargo.toml文件:
[package]
name = "insert_text"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
regex = "1.7.2"
main.rs文件(仅顶部):
fn main() {
let template = read_template();
apply_template(&template);
}
fn get_user_input(what_input: &str) -> String{
println!("Please enter the Path where {} is.", what_input);
let mut user_input = String::new();
io::stdin().read_line(&mut user_input).expect("Not a Valid Input");
return user_input;
}
fn read_template() -> String{
let user_input = get_user_input("template");
let mut path = Path::new(&user_input);
let mut file = match fs::File::open(path) {
Ok(file) => file,
Err(why) => { panic!("couldn't open: {}", why)}
};
let mut template_content = String::new();
match file.read_to_string(&mut template_content){
Ok(_) => println!("Successfully read template"),
Err(why) => {println!("Couldn't convert file to template: {}", why)},
}
return template_content;
}
fn apply_template(template : &str) {
//let mut user_input = get_user_input("Folder");
let mut path_to_folder = Path::new("C:/Users/micrs/Documents/Neuer Ordner/");
let files = fs::read_dir(path_to_folder).unwrap();
let re = Regex::new(r"}B.*").unwrap();
for file in files{
if re.is_match(&file.as_ref().unwrap().file_name().to_str().unwrap()){
let file_path = file.unwrap().path();
let mut file = File::open(file_path).expect("Couldn't find file");
file.write_all(template.as_bytes()).expect("Couldn't write file");
}
}
println!("Successfully changed files.")
我已经试过了
1.检查属性,它应该能够写入该文件
- cargo在管理控制台中运行(仍然是相同的错误)
我怎样才能让程序写入这些文件。
1条答案
按热度按时间6rqinv9w1#
在
File::open
的文档中,你会看到它试图以只读模式打开文件。这不允许你写入你的文件,你正在尝试:使用
File::create
,以只写模式打开文件: