Метод modified
Метод modified класса Metadata возвращает время
последнего изменения файла или директории. Метод не принимает
параметров и возвращает значение типа
Result<SystemTime, io::Error>. Если операция прошла
успешно, результатом будет Ok с объектом
SystemTime, который можно преобразовать в удобный
формат. В противном случае возвращается ошибка
Err.
Синтаксис
metadata.modified()
Пример
Давайте получим метаданные файла "test.txt" и выведем
время его последнего изменения:
use std::fs;
use std::path::Path;
fn main()
{
let path = Path::new("test.txt");
let metadata = fs::metadata(path).unwrap();
let modified = metadata.modified().unwrap();
println!("{:?}", modified);
}
Результат выполнения кода:
SystemTime { tv_sec: 1700000000, tv_nsec: 0 }
Пример
Давайте получим время последнего изменения файла и выведем его в секундах, прошедших с момента UNIX-эпохи:
use std::fs;
use std::path::Path;
use std::time::UNIX_EPOCH;
fn main()
{
let path = Path::new("test.txt");
let metadata = fs::metadata(path).unwrap();
let modified = metadata.modified().unwrap();
let duration = modified.duration_since(UNIX_EPOCH).unwrap();
println!("{}", duration.as_secs());
}
Результат выполнения кода:
1700000000
Пример
Давайте обработаем возможную ошибку при получении времени последнего изменения несуществующего файла:
use std::fs;
use std::path::Path;
fn main()
{
let path = Path::new("missing.txt");
match fs::metadata(path)
{
Ok(metadata) =>
{
match metadata.modified()
{
Ok(time) => println!("{:?}", time),
Err(e) => println!("Error: {}", e),
}
},
Err(e) => println!("Error: {}", e),
}
}
Результат выполнения кода:
Error: No such file or directory (os error 2)