Загружаем изображение…
Продолжим о файлах. Следующая программа читает файл (текстовый) и пишет данные в другой файл, который создаётся или перезаписывается.
use std::io::Read;
use std::fs::File;
use std::io::Write;
// открыть для чтения
fn of(ps:&str) -> Result<File, std::io::Error> {
File::open(ps)
}
// создать файл
fn wf(ps:&str) -> Result<File, std::io::Error> {
File::create(ps)
}
fn main() {
let s:String = "./1.txt".to_string();
let s2:String = "./2.txt".to_string();
match of(&s) { // обработка открытия
Ok(mut file) => {
println!("Файл открыт для чтения");
let mut txt = String::new();
match file.read_to_string(&mut txt) { // чтение
Ok(_) => {
match wf(&s2) { // открыть для записи (создать)
Ok(mut file2) => {
match file2.write_all(txt.as_bytes()) { //записать
Ok(_) => println!("Записано"),
Err(_) => println!("Ошибка записи"),
}
},
Err(_) => println!("Ошибка создания"),
}
}
Err(e) => eprintln!("Не удалось прочитать данные из файла: {}", e),
}
},
Err(_e) => {
println!("Ошибка");
}
}
}
В программе должно быть всё понятно, так как подобное уже использовано в предыдущих постах. Да, может смущать вот такая вложенная структура match. Но к упрощению такой записи мы вернёмся позднее, также как позднее мы подробнее обратимся к вопросам управления файлами на Rust.
use std::io::Read;
use std::fs::File;
use std::io::Write;
// открыть для чтения
fn of(ps:&str) -> Result<File, std::io::Error> {
File::open(ps)
}
// создать файл
fn wf(ps:&str) -> Result<File, std::io::Error> {
File::create(ps)
}
fn main() {
let s:String = "./1.txt".to_string();
let s2:String = "./2.txt".to_string();
match of(&s) { // обработка открытия
Ok(mut file) => {
println!("Файл открыт для чтения");
let mut txt = String::new();
match file.read_to_string(&mut txt) { // чтение
Ok(_) => {
match wf(&s2) { // открыть для записи (создать)
Ok(mut file2) => {
match file2.write_all(txt.as_bytes()) { //записать
Ok(_) => println!("Записано"),
Err(_) => println!("Ошибка записи"),
}
},
Err(_) => println!("Ошибка создания"),
}
}
Err(e) => eprintln!("Не удалось прочитать данные из файла: {}", e),
}
},
Err(_e) => {
println!("Ошибка");
}
}
}
В программе должно быть всё понятно, так как подобное уже использовано в предыдущих постах. Да, может смущать вот такая вложенная структура match. Но к упрощению такой записи мы вернёмся позднее, также как позднее мы подробнее обратимся к вопросам управления файлами на Rust.
Просмотры: 49