是否可以做一个等效的 'find . JDK7中的-ctime n'(Unix命令)?即根据上次更改时间查找所有文件?我查看了新的 FileVisitor/BasicFileAttributes/SimpleFileVisitor 类,但看不到它是如何完成的。
4 回答
以下对我有用(使用 Files.walkFileTree 和 FileVisitor):
FileTime ctime = (FileTime) Files.getAttribute(path, "unix:ctime");
在 JDK 7 论坛中,有关于该主题的讨论
它基本上说:
来自 creationTime 的描述“如果文件系统实现不支持时间戳来指示文件创建的时间,则此方法返回特定于实现的默认值,通常是最后修改时间或表示纪元的 FileTime (1970- 01-01T00:00:00Z)”。因此,您观察到的行为是预期的。如果您确实需要,可以使用上次状态更改的时间,请尝试 Files.getAttribute(path, "unix:ctime")。
因此,您自己的答案似乎是正确的。
getCreationTime()
您可以通过调用文件属性对象来获取文件的创建时间。您可以使用Files.walkFileTree
和 进行目录树遍历FileVisitor
。把这些放在一起,你就可以实现了find . -ctime n
。
这是creationTime的javadoc所说的:
如果文件系统实现不支持时间戳来指示文件创建的时间,则此方法返回特定于实现的默认值,通常是最后修改时间或表示纪元的 FileTime (1970-01-01T00: 00:00Z)。
由于在 Unix/Linux 上创建不是典型的,因此该方法返回最后修改时间。