New We are sorting MAX channels into categories and territories. Read the news
Loading image…

Продолжим о файлах. Следующая программа читает файл (текстовый) и пишет данные в другой файл, который создаётся или перезаписывается.



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.
Views: 49
Open in MAX Report an inaccuracy

Report an inaccuracy

Describe what needs fixing. If you have a source, add a link.

You are leaving datool.ru

The link leads to an external website. datool.ru is not responsible for its content — check the address before entering passwords or payment details.

Redirecting in 10 s

Go