我不需要上次修改时间而不是上次文件访问时间,而是文件创建时间。我还没有找到有关此信息。也许是一些图书馆?
Path p = Paths.get(f.getAbsoluteFile().toURI());
BasicFileAttributes view = null;
try {
view = Files.getFileAttributeView(p,
BasicFileAttributeView.class).readAttributes();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
FileTime creationTime = view.creationTime();
在此代码创建时间无效并返回今天日期。
操作系统:Windows 7 Java:SE-1.7
答案 0 :(得分:9)
正如yshavit所说,并非所有操作系统都记录创建的日期。但是,您应该能够使用java.nio.file
来确定具有此功能的操作系统上的此信息 - 请参阅files.getAttribute
的文档 - 请注意BasicFileAttributeView
包含{{1}的字段}}
您可以使用creationTime
来确定当前操作系统支持的FileSystems.getDefault();
。
FileAttributeView
将返回一个Files.getAttribute(path, "basic:createdAt");
对象,其中包含在支持FileTime
的系统上创建文件的日期。您必须将其转换为BasicFileAttributeView
对象,但我会让您自己解决这个问题。
答案 1 :(得分:5)
如何使用BasicFileAttributes
类在Java
中获取文件的创建日期,这是一个示例:
Path path = Paths.get("C:\\Users\\jorgesys\\workspaceJava\\myfile.txt");
BasicFileAttributes attr;
try {
attr = Files.readAttributes(path, BasicFileAttributes.class);
System.out.println("Creation date: " + attr.creationTime());
} catch (IOException e) {
System.out.println("oops error! " + e.getMessage());
}
答案 2 :(得分:3)
您无法在所有系统中执行此操作,因为并非所有系统都会记录该信息。例如,Linux并不是这样;见this SO thread。
许多程序"修改"通过复制文件,对副本进行更改,然后将副本移动到原始文件的位置来复制文件。所以对于那些人来说,创造和最后修改之间并没有有意义的区别。