std::fs в Rust — это модуль для работы с файловой системой.

Обеспечивает операции для работы с файлами и директориями.

Основные возможности:

1. Работа с файлами

#![allow(unused)]
fn main() {
use std::fs;

// Чтение файлов
let content = fs::read_to_string("file.txt")?;
let bytes = fs::read("file.bin")?;

// Запись файлов
fs::write("file.txt", "content")?;

// Открытие файлов с опциями
let file = fs::File::open("file.txt")?;
let file = fs::File::create("new_file.txt")?;
}

2. Работа с директориями

#![allow(unused)]
fn main() {
// Создание директории
fs::create_dir("path")?;
fs::create_dir_all("nested/path")?;

// Чтение содержимого директории
for entry in fs::read_dir(".")? {
    let entry = entry?;
    println!("{}", entry.file_name());
}

// Удаление
fs::remove_dir("path")?;
fs::remove_file("file.txt")?;
}

3. Метаданные и информация

#![allow(unused)]
fn main() {
let metadata = fs::metadata("file.txt")?;
println!("Size: {}", metadata.len());
println!("Is dir: {}", metadata.is_dir());

// Проверка существования
if fs::try_exists("file.txt")?.is_ok() {
    println!("File exists!");
}
}

4. Операции с путями

#![allow(unused)]
fn main() {
// Переименование/перемещение
fs::rename("old.txt", "new.txt")?;

// Символические ссылки (Unix)
#[cfg(unix)]
fs::soft_link("original", "link")?;

// Жесткие ссылки
fs::hard_link("original", "link")?;
}

Типичные use-cases:

  • Чтение конфигурационных файлов
  • Логирование в файлы
  • Загрузка/сохранение данных
  • Работа с временными файлами
  • Управление кэшем приложения
  • Инициализация структуры директорий

Пример полного использования:

use std::fs;
use std::io;

fn main() -> io::Result<()> {
    // Создать структуру директорий
    fs::create_dir_all("data/cache")?;
    
    // Записать данные
    fs::write("data/config.json", r#"{"key": "value"}"#)?;
    
    // Прочитать данные
    let config = fs::read_to_string("data/config.json")?;
    
    // Получить список файлов
    for entry in fs::read_dir("data")? {
        println!("File: {:?}", entry?.file_name());
    }
    
    Ok(())
}

std::fs — это основной инструмент для любого взаимодействия с файловой системой в Rust-приложениях.