Перейти к содержанию

Файловые операции в Rust - Создание, запись, чтение и удаление файлов

Posted on:31 марта 2023 г. at 08:35

Example Dynamic OG Image link В 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 используется для открытия файла для записи и для создания файла, если он не существует. Если при открытии или записи в файл возникает ошибка, то будет выведено сообщение на консоль.