是否可以进行 'find . -ctime n'在JDK7中?
是否可以做一个等效的“find”。 JDK7 中的 -ctime n'(Unix 命令)?即根据上次更改时间查找所有文件? 我查看了新的 FileVisitor/BasicFileAttributes/SimpleFileVisitor 类,但我看不出它是如何完成的。
Is it possible to do a equivalent 'find . -ctime n' (Unix command) in JDK7? i.e. find all files based on last changed time?
I had a look at the new FileVisitor/BasicFileAttributes/SimpleFileVisitor classes but I cannot see how it could be done.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
以下对我有用(使用 Files.walkFileTree 和 FileVisitor):
FileTime ctime = (FileTime) Files.getAttribute(path, "unix:ctime");
The following worked for me (using Files.walkFileTree and a FileVisitor) :
FileTime ctime = (FileTime) Files.getAttribute(path, "unix:ctime");
在 JDK 7 论坛中,有 就该主题展开讨论
它基本上说:
所以,你自己的答案似乎是正确的。
In the JDK 7 Forums there is discussion opened on the subject
It basically says:
So, your own answer seems to be the right one.
您可以通过在文件属性对象上调用
getCreationTime()
来获取文件的创建时间。您可以使用Files.walkFileTree
和FileVisitor
进行目录树遍历。将它们放在一起,您就可以实现find 。 -ctime n。
You can get the creation time of a file by calling
getCreationTime()
on its file attributes object. You can do a directory tree walk usingFiles.walkFileTree
and aFileVisitor
. Put these together and you can implementfind . -ctime n
.creationTime 的 javadoc 是这样说的:
如果文件系统实现不支持时间戳来指示文件创建的时间,则此方法返回一个特定于实现的默认值,通常是上次修改时间或表示纪元的 FileTime ( 1970-01-01T00:00:00Z)。
由于创建在 Unix/Linux 上并不常见,因此该方法返回最后修改时间。
Here's what creationTime's javadoc says:
If the file system implementation does not support a time stamp to indicate the time when the file was created then this method returns an implementation specific default value, typically the last-modified-time or a FileTime representing the epoch (1970-01-01T00:00:00Z).
As the creation is not typical on Unix/Linux then the method is returning the last modified time.