获取文件创建的日期/时间

7

这似乎是一个非常简单的问题,但我在网上找不到确切的答案。如何通过Java的文件管理器获取文件创建的日期/时间?除了文件名之外,我还能得到关于文件“属性”的什么信息?


可能是 https://dev59.com/zXE85IYBdhLWcg3wikK- 的重复问题。 - jt.
你有检查过这个链接吗?https://dev59.com/inVD5IYBdhLWcg3wRpeX? - Adisesha
嗯,@jt,我可能忽略了那个。你应该考虑将其作为你的答案,那个链接指引了我正确的方向。 - Brian
可能是如何在Java中获取文件创建日期的重复问题。 - CoolBeans
@AeroDroid - 这个问题将被关闭为重复。 - CoolBeans
但请注意,大多数Linux文件系统不支持文件创建时间戳 - Mihail Klushnev
1个回答

11

我不确定在Java 6及以下版本中该如何获取它。在Java 7的新文件系统API中,代码如下:

Path path = ... // the path to the file
BasicFileAttributes attributes = 
    Files.readAttributes(path, BasicFileAttributes.class);
FileTime creationTime = attributes.creationTime();

正如CoolBeans所说,不是所有文件系统都存储创建时间。 BasicFileAttributes Javadoc 中指出:

  

如果文件系统实现不支持时间戳以指示文件创建时间,则此方法返回特定于实现的默认值,通常为最后修改时间或表示纪元(1970-01-01T00:00:00Z)的 FileTime。


嗯,我想我会选择jt的答案。那对我有用。 - Brian
返回默认值似乎很糟糕。谁创建了这个API?他们的理由是什么? - Henry Story
@bblfish:在我看来,对于像创建时间这样的东西返回默认值并没有太大的潜在危害。这简化了API,并允许处理属性的代码将所有“BasicFileAttributes”视为相同,而不必担心底层文件系统是否支持某个特定属性。 - ColinD
有没有一种非 NIO 的方式来获取创建时间? - ABS
1
@KMP:你可以尝试调用像“stat”这样的系统函数,但是不可以使用“File” API。 - ColinD

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接