如何获取文件的正确文件创建日期?

我不需要上次修改时间而不是上次文件访问时间,而是文件创建时间。 我还没有找到有关此信息。 也许一些libs?

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

正如yshavit所说,并非所有操作系统都记录创建的日期。 但是,您应该能够使用java.nio.file来确定具有此function的操作系统上的此信息 – 请参阅files.getAttribute的文档 – 请注意, BasicFileAttributeView具有creationTime的字段。

您可以使用FileSystems.getDefault(); 确定当前操作系统支持哪些FileAttributeView

Files.getAttribute(path, "basic:createdAt"); 将返回一个FileTime对象,其中包含在支持BasicFileAttributeView的系统上创建文件的日期。 你必须将它转换为java.util.Date对象,但我会让你自己解决这个问题。

进一步阅读

  • 用于getAttribute() NIO API
  • BasicFileAttributeView NIO API
  • 使用readAttributes() 教程
  • 有关使用FileAttributes的综合教程
  • 同一主题上的另一个StackOverflow 线程

如何使用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()); } 

您将无法在所有系统中执行此操作,因为并非所有系统都会记录该信息。 例如,Linux没有; 看到这个SO线程 。

许多程序通过复制文件来“修改”文件,对副本进行更改,然后将副本移动到原始文件的位置。 所以对于那些人来说,创造和最后修改之间没有明显的区别。