1

是否可以做一个等效的 'find . JDK7中的-ctime n'(Unix命令)?即根据上次更改时间查找所有文件?我查看了新的 FileVisitor/BasicFileAttributes/SimpleFileVisitor 类,但看不到它是如何完成的。

4

4 回答 4

5

以下对我有用(使用 Files.walkFileTree 和 FileVisitor):

FileTime ctime = (FileTime) Files.getAttribute(path, "unix:ctime");

于 2011-05-21T12:55:51.590 回答
2

在 JDK 7 论坛中,有关于该主题的讨论

它基本上说:

来自 creationTime 的描述“如果文件系统实现不支持时间戳来指示文件创建的时间,则此方法返回特定于实现的默认值,通常是最后修改时间或表示纪元的 FileTime (1970- 01-01T00:00:00Z)”。因此,您观察到的行为是预期的。如果您确实需要,可以使用上次状态更改的时间,请尝试 Files.getAttribute(path, "unix:ctime")。

因此,您自己的答案似乎是正确的。

于 2011-05-21T13:36:53.237 回答
1

getCreationTime()您可以通过调用文件属性对象来获取文件的创建时间。您可以使用Files.walkFileTree和 进行目录树遍历FileVisitor。把这些放在一起,你就可以实现了find . -ctime n

于 2011-05-20T13:55:40.057 回答
0

这是creationTime的javadoc所说的:

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

由于在 Unix/Linux 上创建不是典型的,因此该方法返回最后修改时间。

于 2011-09-09T16:57:58.077 回答