There is another similar question to mine on StackOverflow (How to get creation date of a file in Java), but the answer isn't really there as the OP had a different need that could be solved via other mechanisms. I am trying to create a list of the files in a directory that can be sorted by age, hence the need for the file creation date.
I haven't located any good way to do this after much trawling of the web. Is there a mechanism for getting file creation dates?
BTW, currently on a Windows system, may need this to work on a Linux system as well. Also, I can't guarantee that a file naming convention would be followed where the creation date/time is embedded in the name.
As a follow-up to this question - since it relates specifically to creation time and discusses obtaining it via the new nio classes - it seems right now in JDK7's implementation you're out of luck. Addendum: same behaviour is in OpenJDK7.
On Unix filesystems you cannot retrieve the creation timestamp, you simply get a copy of the last modification time. So sad, but unfortunately true. I'm not sure why that is but the code specifically does that as the following will demonstrate.
On a Windows system, you can use free FileTimes library.
This will be easier in the future with Java NIO.2 (JDK 7) and the java.nio.file.attribute package.
But remember that most Linux filesystems don't support file creation timestamps.
Java nio has options to access creationTime and other meta-data as long as the filesystem provides it. Check this link out
For example(Provided based on @ydaetskcoR's comment):
I've solved this problem using JDK 7 with this code:
This is a basic example of how to get the creation date of a file in
Java
, usingBasicFileAttributes
class:The API of
java.io.File
only supports getting the last modified time. And the Internet is very quiet on this topic as well.Unless I missed something significant, the Java library as is (up to but not yet including Java 7) does not include this capability. So if you were desperate for this, one solution would be to write some C(++) code to call system routines and call it using JNI. Most of this work seems to be already done for you in a library called JNA, though.
You may still need to do a little OS specific coding in Java for this, though, as you'll probably not find the same system calls available in Windows and Unix/Linux/BSD/OS X.