Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File Dart-如何获取文件的创建时间?_File_Datetime_Flutter_Dart - Fatal编程技术网

File Dart-如何获取文件的创建时间?

File Dart-如何获取文件的创建时间?,file,datetime,flutter,dart,File,Datetime,Flutter,Dart,我需要在我的Flatter项目中获取文件的creationTime,但是我从文件对象得到的只是lastModified()和lastAccessed(),没有获取创建的DateTime的方法 我认为在Java中,可以: 还有Swift: 我可以使用flatterMethodChannel函数来获得它,但我想知道是否有一种原生的Dart方法来获得它 如何获取本地文件信息,如文件创建时间并非所有平台都有文件创建时间的概念。例如,Linux不适用于所有文件系统,而常规的stat()调用不提供该信息 这

我需要在我的Flatter项目中获取文件的creationTime,但是我从
文件
对象得到的只是
lastModified()
lastAccessed()
,没有获取创建的
DateTime
的方法

我认为在Java中,可以: 还有Swift:

我可以使用flatter
MethodChannel
函数来获得它,但我想知道是否有一种原生的Dart方法来获得它


如何获取本地文件信息,如文件创建时间并非所有平台都有文件创建时间的概念。例如,Linux不适用于所有文件系统,而常规的
stat()
调用不提供该信息

这并不意味着你不能进入似乎是创造的时间。但您不必相信它的价值,Java API中也记录了它的价值:

返回创建时间。创建时间是创建文件的时间

如果文件系统实现不支持时间戳来指示创建文件的时间,则此方法将返回特定于实现的默认值,通常是上次修改的时间或表示历元的文件时间(1970-01-01T00:00:00Z)

如果使用具有以下属性的
FileStat
类,Dart也有类似的API:

日期时间更改

上次更改文件系统对象的数据或元数据的时间

在Windows平台上,这是文件创建时间

但是FileStat的数据被记录为来自POSIX
stat()
系统调用,该调用没有文件创建时间戳的概念,但具有以下功能:

时间标准时间;/*最后访问时间*/
时间t st_mtime;/*上次修改时间*/
时间到最后时刻;/*上次状态更改的时间*/
映射到可以从
FileStat
获取的三个时间戳:

import "dart:io";

main() {
  final stat = FileStat.statSync("test.dart");
  print('Accessed: ${stat.accessed}');
  print('Modified: ${stat.modified}');
  print('Changed:  ${stat.changed}');
}
但正如您在使用XFS的Linux上所看到的,它将为更改和修改返回相同的值:

[julemand101@beta~]$dart test.dart
访问时间:2020-04-0718:19:20.404
修改日期:2020-04-07 18:19:19.020
更改:2020-04-07 18:19:19.020
如果您更新索引节点信息,则可以获得不同的
更改时间

[julemand101@beta~]$chmod+x test.dart
[julemand101@beta~]$dart test.dart
访问时间:2020-04-0718:19:42.341
修改日期:2020-04-07 18:19:19.020
更改:2020-04-07 18:19:39.397
这是有意义的,因为
st\u ctime
被记录为:

通过写入或设置inode信息(即所有者、组、链接计数、模式等)来更改字段st_ctime


因此,简而言之,您应该尝试看看在使用
FileStat
时iOS和Android会发生什么。但简言之,很难编写独立于平台的API来访问每个平台上的差异。特别是对于像Linux这样的平台,它取决于每个文件系统是否存在功能。

并非所有平台都有文件创建时间的概念。例如,Linux不适用于所有文件系统,而常规的
stat()
调用不提供该信息

这并不意味着你不能进入似乎是创造的时间。但您不必相信它的价值,Java API中也记录了它的价值:

返回创建时间。创建时间是创建文件的时间

如果文件系统实现不支持时间戳来指示创建文件的时间,则此方法将返回特定于实现的默认值,通常是上次修改的时间或表示历元的文件时间(1970-01-01T00:00:00Z)

如果使用具有以下属性的
FileStat
类,Dart也有类似的API:

日期时间更改

上次更改文件系统对象的数据或元数据的时间

在Windows平台上,这是文件创建时间

但是FileStat的数据被记录为来自POSIX
stat()
系统调用,该调用没有文件创建时间戳的概念,但具有以下功能:

时间标准时间;/*最后访问时间*/
时间t st_mtime;/*上次修改时间*/
时间到最后时刻;/*上次状态更改的时间*/
映射到可以从
FileStat
获取的三个时间戳:

import "dart:io";

main() {
  final stat = FileStat.statSync("test.dart");
  print('Accessed: ${stat.accessed}');
  print('Modified: ${stat.modified}');
  print('Changed:  ${stat.changed}');
}
但正如您在使用XFS的Linux上所看到的,它将为更改和修改返回相同的值:

[julemand101@beta~]$dart test.dart
访问时间:2020-04-0718:19:20.404
修改日期:2020-04-07 18:19:19.020
更改:2020-04-07 18:19:19.020
如果您更新索引节点信息,则可以获得不同的
更改时间

[julemand101@beta~]$chmod+x test.dart
[julemand101@beta~]$dart test.dart
访问时间:2020-04-0718:19:42.341
修改日期:2020-04-07 18:19:19.020
更改:2020-04-07 18:19:39.397
这是有意义的,因为
st\u ctime
被记录为:

通过写入或设置inode信息(即所有者、组、链接计数、模式等)来更改字段st_ctime

因此,简而言之,您应该尝试看看在使用
FileStat
时iOS和Android会发生什么。但简言之,很难编写独立于平台的API来访问每个平台上的差异。特别是对于像Linux这样的平台,它取决于每个文件系统是否存在功能