В node.js как я могу узнать, будет ли fs.stat () возвращать пригодные для использования поля `crtime` и / или` birthtime` для данного файла / path / volume / fs? - PullRequest
1 голос
/ 09 марта 2019

Недавно я узнал, что разные ОС и даже разные файловые системы в одной ОС поддерживают разные подмножества временных меток, возвращаемых lstat.

Объект Stats *Возвращаемое значение 1008 * дает нам четыре раза, каждый в двух разных вариантах.

js Объекты даты:

  • atime: последний раз, когда к этому файлу обращались выражается в миллисекундах с начала эпохи POSIX
  • mtime: в последний раз этот файл изменялся ...
  • ctime: в последний раз состояние файла было изменено ...
  • birthtime: время создания время создания этого файла

(atimeMs, mtimeMs,ctimeMs и birthtimeMs - это js версии объекта Date каждого из перечисленных выше)

«Изменено» означает, что содержимое файла было изменено путем записи в него и т. Д. «Изменено» означает метаданные файла, такие как владельцыи разрешения были изменены.

Linux традиционно никогда не поддерживал концепцию времени рождения, но какболее новые файловые системы поддерживали его, недавно в него добавили поддержку, надеюсь, для всех соответствующих слоев стека Linux, если я правильно прочитал.

Но Windows и Mac поддерживают время рождения, как и их собственные файловые системы.

С другой стороны, Windows традиционно не поддерживала концепцию изменения файла отдельно от модификации файла.Но для соответствия POSIX добавлена ​​поддержка на уровне API и NTFS.(Похоже, он не отображается нигде в графическом интерфейсе или командной строке).FAT fs не поддерживает его.

Когда я вызываю lstat для файла в Windows на диске NTFS, результаты для ctime выглядят хорошо.Когда я вызываю его для файла на диске FAT, ctime содержит мусор.(В моем случае это всегда 2076-11-29T08:54:34.955Z для каждого файла.)

Я не знаю, является ли это ошибкой.

Я не знаю, что birthtime возвращает в Linux прифайловые системы, которые не поддерживают это.Надеюсь, null или undefined, но, возможно, также мусор.Я также не знаю, что Linux или Mac возвращают в ctime для файлов на томах FAT.

Так есть ли способ в Node получить информацию о том, какие из этих функций поддерживаются для данного файла / пути/ фс?

...