Тип FileType
Тип FileType представляет собой перечисление (enum),
которое описывает тип файла в файловой системе.
Он возвращается методами file_type у
DirEntry и Metadata, а также используется
для определения того, является ли путь файлом, директорией
или символической ссылкой. Тип FileType не хранит
имя файла или его размер - только его категорию.
Основные методы типа FileType позволяют проверить
категорию файла: is_file возвращает true,
если это обычный файл, is_dir - если это директория,
is_symlink - если это символическая ссылка.
Синтаксис
std::fs::FileType
Тип FileType находится в модуле std::fs.
Получить его значение можно через методы file_type
у DirEntry или Metadata.
Пример
Давайте создадим директорию и файл, а затем проверим их типы
с помощью метода file_type:
use std::fs;
use std::path::Path;
fn main()
{
let dir_path = Path::new("test_dir");
let file_path = Path::new("test_dir/test_file.txt");
fs::create_dir_all(dir_path).unwrap();
fs::write(file_path, "abcde").unwrap();
let dir_meta = fs::metadata(dir_path).unwrap();
let file_meta = fs::metadata(file_path).unwrap();
let dir_type = dir_meta.file_type();
let file_type = file_meta.file_type();
println!("is_dir: {}", dir_type.is_dir());
println!("is_file: {}", dir_type.is_file());
println!("is_file: {}", file_type.is_file());
println!("is_dir: {}", file_type.is_dir());
fs::remove_dir_all(dir_path).unwrap();
}
Результат выполнения кода:
is_dir: true
is_file: false
is_file: true
is_dir: false
Пример
Давайте проверим, является ли путь символической ссылкой,
используя метод is_symlink:
use std::fs;
use std::path::Path;
fn main()
{
let dir_path = Path::new("test_dir");
let file_path = Path::new("test_dir/test_file.txt");
fs::create_dir_all(dir_path).unwrap();
fs::write(file_path, "12345").unwrap();
let file_meta = fs::metadata(file_path).unwrap();
let file_type = file_meta.file_type();
println!("is_symlink: {}", file_type.is_symlink());
println!("is_file: {}", file_type.is_file());
fs::remove_dir_all(dir_path).unwrap();
}
Результат выполнения кода:
is_symlink: false
is_file: true