РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
883 of 1245 menu

Метод metadata класса DirEntry

Метод metadata класса DirEntry возвращает объект Metadata, содержащий информацию о файле или директории, на которую указывает данная запись директории. Метод не принимает параметров и возвращает значение типа io::Result<Metadata>, так как получение метаданных может завершиться ошибкой (например, если файл был удалён или доступ запрещён).

Класс DirEntry создаётся при чтении содержимого директории с помощью метода read_dir. Каждая запись соответствует одному элементу внутри директории, а метод metadata позволяет получить подробную информацию об этом элементе: размер, тип, время создания, изменения и последнего доступа, а также права доступа.

Синтаксис

dir_entry.metadata()

Пример

Давайте прочитаем содержимое текущей директории и выведем размер каждого элемента:

use std::fs; fn main() { let entries = fs::read_dir(".").unwrap(); for entry in entries { let entry = entry.unwrap(); let meta = entry.metadata().unwrap(); println!("{}: {} bytes", entry.file_name().to_string_lossy(), meta.len()); } }

Результат выполнения кода (пример):

"Cargo.toml: 145 bytes" "src: 4096 bytes" "target: 4096 bytes"

Пример

Давайте проверим, является ли каждый элемент директории файлом или папкой, используя метаданные:

use std::fs; fn main() { let entries = fs::read_dir(".").unwrap(); for entry in entries { let entry = entry.unwrap(); let meta = entry.metadata().unwrap(); let kind = if meta.is_file() { "file" } else if meta.is_dir() { "dir" } else { "other" }; println!("{}: {}", entry.file_name().to_string_lossy(), kind); } }

Результат выполнения кода (пример):

"Cargo.toml: file" "src: dir" "target: dir"

Пример

Давайте получим время последнего изменения для каждого элемента директории:

use std::fs; fn main() { let entries = fs::read_dir(".").unwrap(); for entry in entries { let entry = entry.unwrap(); let meta = entry.metadata().unwrap(); match meta.modified() { Ok(time) => { println!("{}: {:?}", entry.file_name().to_string_lossy(), time); } Err(e) => { println!("{}: error - {}", entry.file_name().to_string_lossy(), e); } } } }

Результат выполнения кода (пример):

"Cargo.toml: SystemTime { tv_sec: 1700000000, tv_nsec: 0 }" "src: SystemTime { tv_sec: 1700000001, tv_nsec: 0 }" "target: SystemTime { tv_sec: 1700000002, tv_nsec: 0 }"

Смотрите также

  • класс DirEntry,
    который представляет запись директории
  • метод path,
    который возвращает путь к элементу директории
  • метод file_name,
    который возвращает имя элемента директории
  • класс Metadata,
    который содержит информацию о файле или директории
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить