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

Igo*_*nko 8 java file

我不需要上次修改时间而不是上次文件访问时间,但文件创建时间.我还没有找到有关此信息.也许一些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();
Run Code Online (Sandbox Code Playgroud)

在此代码创建时间无效并返回今天日期.

操作系统:Windows 7 Java:SE-1.7

Eli*_*man 10

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

您可以使用它FileSystems.getDefault();来确定FileAttributeView当前操作系统支持的内容.

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

进一步阅读

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


Jor*_*sys 5

如何Java使用BasicFileAttributes类获取文件的创建日期,这是一个示例:

   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());
    }
Run Code Online (Sandbox Code Playgroud)