用Java确定文件创建日期在StackOverflow上还有另一个类似的问题(如何在Java中获取文件的创建日期),但答案并不是真的存在,因为OP有不同的需求可以通过其他机制解决。我正在尝试创建一个目录中的文件列表,可以按年龄排序,因此需要文件创建日期。经过大量的网络搜寻,我没有找到任何好办法。是否有获取文件创建日期的机制?BTW,目前在Windows系统上,也可能需要它在Linux系统上工作。此外,我不能保证在名称中嵌入创建日期/时间的情况下将遵循文件命名约定。
3 回答

湖上湖
TA贡献2003条经验 获得超2个赞
只要文件系统提供,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());

明月笑刀无情
TA贡献1828条经验 获得超4个赞
作为这个问题的后续 - 因为它与创建时间有关,并讨论通过新的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); } }}
添加回答
举报
0/150
提交
取消