Не на всех платформах есть понятие времени создания файла. Например, Linux подходит не для всех файловых систем, и общий вызов stat()
не предоставляет эту информацию.
Это не означает, что вы не можете получить доступ к тому, что кажется временем создания. Но вам не обязательно доверять его значению, которое также задокументировано в Java API:
Возвращает время создания. Время создания - это время создания файла.
Если реализация файловой системы не поддерживает отметку времени для указания времени создания файла, тогда этот метод возвращает значение реализации, заданное c значением по умолчанию обычно это время последнего изменения или FileTime, представляющее эпоху (1970-01-01T00: 00: 00Z).
https://docs.oracle.com/javase/7/docs/api/java/nio/file/attribute/BasicFileAttributes.html#creationTime ()
У Dart действительно есть подобный API, если вы используете класс FileStat
, который имеет это свойство:
Дата / время изменено
Время последнего изменения данных или метаданных объект файловой системы.
На Windows платформах это время создания файла.
https://api.dart.dev/stable/2.7.2/dart-io/FileStat/changed.html
Но документально подтверждено, что данные для FileStat поступают из системного вызова POSIX stat()
, который не имеет концепции создания временных меток файлов, но имеет следующее:
time_t st_atime; /* time of last access */
time_t st_mtime; /* time of last modification */
time_t st_ctime; /* time of last status change */
который сопоставляется с тремя временными метками, которые можно получить от FileStat
:
import "dart:io";
main() {
final stat = FileStat.statSync("test.dart");
print('Accessed: ${stat.accessed}');
print('Modified: ${stat.modified}');
print('Changed: ${stat.changed}');
}
Но s, вы можете увидеть на Linux с XFS, он вернет одно и то же значение для измененных и модифицированных:
[julemand101@beta ~]$ dart test.dart
Accessed: 2020-04-07 18:19:20.404
Modified: 2020-04-07 18:19:19.020
Changed: 2020-04-07 18:19:19.020
Вы можете получить другое changed
время, если вы, например, обновите информацию об узле:
[julemand101@beta ~]$ chmod +x test.dart
[julemand101@beta ~]$ dart test.dart
Accessed: 2020-04-07 18:19:42.341
Modified: 2020-04-07 18:19:19.020
Changed: 2020-04-07 18:19:39.397
Что имеет смысл, поскольку st_ctime
задокументировано как:
Поле st_ctime изменяется путем записи или путем установки информации об узле (т. Е. Владельца, группы, количества ссылок, режима, et c.).
https://linux.die.net/man/2/stat
Короче говоря, вы должны попробовать и посмотреть, что происходит с iOS и Android при использовании FileStat
. Короче говоря, сложно написать независимый от платформы API, который дает доступ к различиям на каждой платформе. Особенно для такой платформы, как Linux, где каждая файловая система может решать, существует ли такая функция или нет.