Метод truncate
Метод truncate класса OpenOptions устанавливает
флаг, который определяет, будет ли файл обрезан до нулевой
длины при открытии. Параметром метод принимает логическое
значение: true - обрезать файл, false -
не обрезать. Метод возвращает изменённый объект
OpenOptions, что позволяет использовать цепочку вызовов.
Важно: флаг truncate работает только в том случае,
если файл открывается для записи (установлен флаг
write или append). Если файл не существует,
флаг truncate игнорируется, если не установлен
create.
Синтаксис
OpenOptions::new().truncate(bool)
Пример
Давайте создадим файл с содержимым, а затем откроем его
с флагом truncate, установленным в true,
чтобы обрезать файл до нулевой длины:
use std::fs::OpenOptions;
use std::io::Write;
use std::io::Read;
fn main()
{
let mut file = OpenOptions::new()
.write(true)
.create(true)
.truncate(true)
.open("test.txt")
.unwrap();
file.write_all(b"abcde").unwrap();
drop(file);
let mut file = OpenOptions::new()
.write(true)
.truncate(true)
.open("test.txt")
.unwrap();
let mut content = String::new();
file.read_to_string(&mut content).unwrap();
println!("{:?}", content);
}
Результат выполнения кода:
""
Пример
Давайте откроем файл с флагом truncate,
установленным в false, чтобы сохранить
содержимое файла:
use std::fs::OpenOptions;
use std::io::Write;
use std::io::Read;
fn main()
{
let mut file = OpenOptions::new()
.write(true)
.create(true)
.truncate(false)
.open("test.txt")
.unwrap();
file.write_all(b"12345").unwrap();
drop(file);
let mut file = OpenOptions::new()
.read(true)
.truncate(false)
.open("test.txt")
.unwrap();
let mut content = String::new();
file.read_to_string(&mut content).unwrap();
println!("{:?}", content);
}
Результат выполнения кода:
"12345"
Смотрите также
-
класс
OpenOptions,
который позволяет настраивать параметры открытия файла -
метод
create,
который создаёт файл, если он не существует -
метод
write,
который открывает файл для записи -
метод
open,
который открывает файл с заданными параметрами