用Java确定文件创建日期

用Java确定文件创建日期

在StackOverflow上还有另一个类似的问题(如何在Java中获取文件的创建日期),但答案并不是真的存在,因为OP有不同的需求可以通过其他机制解决。我正在尝试创建一个目录中的文件列表,可以按年龄排序,因此需要文件创建日期。

经过大量的网络搜寻,我没有找到任何好办法。是否有获取文件创建日期的机制?

BTW,目前在Windows系统上,也可能需要它在Linux系统上工作。此外,我不能保证在名称中嵌入创建日期/时间的情况下将遵循文件命名约定。


守着一只汪
浏览 1351回答 3
3回答

湖上湖

只要文件系统提供,Java nio就可以选择访问creationTime和其他元数据。检查此链接了例如(根据@ ydaetskcoR的评论提供):Path file = ...;BasicFileAttributes attr = Files.readAttributes(file, BasicFileAttributes.class);System.out.println("creationTime: " + attr.creationTime());System.out.println("lastAccessTime: " + attr.lastAccessTime());System.out.println("lastModifiedTime: " + attr.lastModifiedTime());

明月笑刀无情

作为这个问题的后续 - 因为它与创建时间有关,并讨论通过新的nio类获得它 - 现在看来JDK7的实现中你运气不好。附录:OpenJDK7中的行为相同。在Unix文件系统上,您无法检索创建时间戳,只需获取上次修改时间的副本即可。太伤心了,但不幸的是真的。我不确定为什么会这样,但代码具体如此,如下所示。import java.io.IOException;import java.nio.file.*;import java.nio.file.attribute.*;public class TestFA {   static void getAttributes(String pathStr) throws IOException {     Path p = Paths.get(pathStr);     BasicFileAttributes view       = Files.getFileAttributeView(p, BasicFileAttributeView.class)               .readAttributes();     System.out.println(view.creationTime()+" is the same as "+view.lastModifiedTime());   }   public static void main(String[] args) throws IOException {     for (String s : args) {         getAttributes(s);     }   }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java