File Dart-如何获取文件的创建时间?
我需要在我的Flatter项目中获取文件的creationTime,但是我从File Dart-如何获取文件的创建时间?,file,datetime,flutter,dart,File,Datetime,Flutter,Dart,我需要在我的Flatter项目中获取文件的creationTime,但是我从文件对象得到的只是lastModified()和lastAccessed(),没有获取创建的DateTime的方法 我认为在Java中,可以: 还有Swift: 我可以使用flatterMethodChannel函数来获得它,但我想知道是否有一种原生的Dart方法来获得它 如何获取本地文件信息,如文件创建时间并非所有平台都有文件创建时间的概念。例如,Linux不适用于所有文件系统,而常规的stat()调用不提供该信息 这
文件
对象得到的只是lastModified()
和lastAccessed()
,没有获取创建的DateTime
的方法
我认为在Java中,可以:
还有Swift:
我可以使用flatterMethodChannel
函数来获得它,但我想知道是否有一种原生的Dart方法来获得它
如何获取本地文件信息,如文件创建时间并非所有平台都有文件创建时间的概念。例如,Linux不适用于所有文件系统,而常规的
stat()
调用不提供该信息
这并不意味着你不能进入似乎是创造的时间。但您不必相信它的价值,Java API中也记录了它的价值:
返回创建时间。创建时间是创建文件的时间
如果文件系统实现不支持时间戳来指示创建文件的时间,则此方法将返回特定于实现的默认值,通常是上次修改的时间或表示历元的文件时间(1970-01-01T00:00:00Z)
如果使用具有以下属性的FileStat
类,Dart也有类似的API:
日期时间更改
上次更改文件系统对象的数据或元数据的时间
在Windows平台上,这是文件创建时间
但是FileStat的数据被记录为来自POSIXstat()
系统调用,该调用没有文件创建时间戳的概念,但具有以下功能:
时间标准时间;/*最后访问时间*/
时间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的数据被记录为来自POSIXstat()
系统调用,该调用没有文件创建时间戳的概念,但具有以下功能:
时间标准时间;/*最后访问时间*/
时间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这样的平台,它取决于每个文件系统是否存在功能