Функция symlink_metadata
Функция symlink_metadata из модуля std::fs возвращает
структуру Metadata с информацией о файле или символической
ссылке. В отличие от функции metadata, она не следует по
символической ссылке, а возвращает метаданные самой ссылки.
Параметром функция принимает путь к файлу или ссылке, который
может быть строкой, Path или PathBuf. Функция
возвращает Result<Metadata>: при успехе - метаданные, при
ошибке - значение io::Error.
Синтаксис
std::fs::symlink_metadata(path)
Пример
Давайте получим метаданные обычного файла и проверим, является ли он символической ссылкой:
use std::fs;
fn main()
{
let res = fs::symlink_metadata("test.txt");
match res
{
Ok(meta) =>
{
println!("is_symlink: {}", meta.file_type().is_symlink());
println!("len: {}", meta.len());
},
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
is_symlink: false
len: 5
Пример
Давайте создадим символическую ссылку и получим её метаданные, не разыменовывая саму ссылку:
use std::fs;
fn main()
{
#[cfg(unix)]
std::os::unix::fs::symlink("test.txt", "link.txt").unwrap();
#[cfg(windows)]
std::os::windows::fs::symlink_file("test.txt", "link.txt").unwrap();
let res = fs::symlink_metadata("link.txt");
match res
{
Ok(meta) =>
{
println!("is_symlink: {}", meta.file_type().is_symlink());
},
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
is_symlink: true
Пример
Давайте обработаем ситуацию, когда путь не существует:
use std::fs;
fn main()
{
let res = fs::symlink_metadata("missing.txt");
match res
{
Ok(meta) => println!("len: {}", meta.len()),
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
Error: No such file or directory (os error 2)
Смотрите также
-
функция
metadata,
которая возвращает метаданные файла, разыменовывая ссылки -
функция
read_link,
которая возвращает путь, на который указывает символическая ссылка -
функция
symlink,
которая создаёт символическую ссылку на файл -
функция
canonicalize,
которая возвращает канонический абсолютный путь