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-приложениях.