В Rust файловые операции могут выполняться с помощью модуля
std::fs
стандартной библиотеки. Модуль предоставляет функции для создания, записи, чтения и удаления файлов.
Чтобы создать файл в Rust, мы можем использовать метод File::create
. Вот пример:
use std::fs::File;
let mut file = File::create("file.txt")
.expect("Не удалось создать файл");
В этом примере мы создаем новый файл с именем file.txt
. Если файл уже существует, он будет усечен до нулевой длины.
Чтобы записать данные в файл, мы можем использовать метод write_all
, предоставляемый функцией std::io::Write
. Вот пример:
use std::io::prelude::*;
let mut file = File::create("file.txt")
.expect("Не удалось создать файл");
file.write_all(b"Hello, world!")
.expect("Не удалось записать данные в файл");
В этом примере мы записываем строку “Hello, world!” в file.txt
файл.
Чтобы открыть существующий файл для записи, мы можем использовать структуру OpenOptions
. Вот пример:
use std::fs::OpenOptions;
let mut file = OpenOptions::new()
.write(true)
.open("file.txt")
.expect("Не удалось открыть файл");
В этом примере мы открываем file.txt
файл для записи и установите флаг записи в значение true
.
Чтобы прочитать данные из файла, мы можем использовать метод File::open
для открытия файла, а затем использовать BufReader
для чтения файла построчно. Вот пример:
use std::fs::File;
use std::io::{BufReader, prelude::*};
let file = File::open("file.txt").unwrap();
let reader = BufReader::new(file);
for line in reader.lines() {
println!("{}", line.unwrap());
}
В этом примере мы читаем file.txt
построчно с помощью BufReader, а затем выводим каждую строку на консоль.
Наконец, когда мы закончим с файлом, мы можем использовать функцию std::fs::remove_file
, чтобы удалить его из системы. Вот пример:
use std::fs;
fs::remove_file("file.txt")
.expect("Не удалось удалить файл");
В этом примере мы удаляем file.txt
файл. Если при удалении файла возникнет ошибка, будет напечатано сообщение об ошибке.
Мы также можем создать приложение с интерфейсом командной строки (CLI), которое выполняет файловые операции. Вот пример:
use std::fs::OpenOptions;
use std::io::{self, Write};
fn main() {
println!("Введите текст:");
let mut text = String::new();
io::stdin()
.read_line(&mut text)
.expect("Не удалось прочитать строку");
let mut file = OpenOptions::new()
.write(true)
.append(true)
.create(true)
.open("example.txt")
.expect("Не удалось открыть файл");
writeln!(file, "{}", text)
.expect("Не удалось записать в файл");
}
В этом примере мы предлагаем пользователю ввести некоторый текст, прочитать текст из стандартного ввода, а затем добавить текст в файл с именем example.txt
. Структура OpenOptions
используется для открытия файла для записи и для создания файла, если он не существует. Если при открытии или записи в файл возникает ошибка, то будет выведено сообщение на консоль.