开发者

Is it possible to do a 'find . -ctime n' in JDK7?

开发者 https://www.devze.com 2023-03-07 12:46 出处:网络
Is it possible to do a equivalent \'find . -ctime n\' (Unix command) in JDK7? i.e. find all files based on last changed time?

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/开发者_Python百科BasicFileAttributes/SimpleFileVisitor classes but I cannot see how it could be done.


The following worked for me (using Files.walkFileTree and a FileVisitor) :

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


In the JDK 7 Forums there is discussion opened on the subject

It basically says:

From creationTime's description "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)". So the behavior you observe is expected. The time of last status change is available if you really need it, try Files.getAttribute(path, "unix:ctime").

So, your own answer seems to be the right one.


You can get the creation time of a file by calling getCreationTime() on its file attributes object. You can do a directory tree walk using Files.walkFileTree and a FileVisitor. Put these together and you can implement find . -ctime n.


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消