Тип OpenOptions
Тип OpenOptions представляет собой структуру для
конфигурирования способа открытия файла. В отличие от
методов File::open и File::create,
которые задают фиксированные режимы, OpenOptions
позволяет гибко комбинировать параметры: чтение, запись,
добавление в конец, создание нового файла или усечение
существующего. Каждый параметр настраивается отдельным
методом, который принимает логическое значение и
возвращает изменённую ссылку на тот же объект. Завершается
настройка вызовом метода open, который открывает
файл и возвращает результат типа Result<File>.
Синтаксис
use std::fs::OpenOptions;
let mut options = OpenOptions::new();
options.read(true)
.write(true)
.append(true)
.create(true)
.create_new(true)
.truncate(true);
let file = options.open(path);
Пример
Давайте откроем файл для чтения и записи, создав его, если он не существует:
use std::fs::OpenOptions;
fn main()
{
let path = "test.txt";
let res = OpenOptions::new()
.read(true)
.write(true)
.create(true)
.open(path);
match res
{
Ok(_) => println!("File opened successfully"),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
File opened successfully
Пример
Давайте откроем файл только для добавления в конец, создав его при необходимости:
use std::fs::OpenOptions;
fn main()
{
let path = "test.txt";
let res = OpenOptions::new()
.append(true)
.create(true)
.open(path);
match res
{
Ok(_) => println!("File opened for appending"),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
File opened for appending
Пример
Давайте попробуем открыть файл для чтения, запретив его создание, и обработаем ошибку, если файла не существует:
use std::fs::OpenOptions;
fn main()
{
let path = "missing.txt";
let res = OpenOptions::new()
.read(true)
.create(false)
.open(path);
match res
{
Ok(_) => println!("File opened"),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
Error: No such file or directory (os error 2)