【问题标题】:Java set accessed date on fileJava 在文件中设置访问日期
【发布时间】:2011-08-31 11:35:33
【问题描述】:

有没有办法在java中设置访问时间而不设置日期修改时间?

这实际上是一个 touch -a 命令。

File 中的 setLastModified 方法同时更新访问时间和修改日期。

我们目前使用的是 java 6。迁移到 7 并非不可能。

【问题讨论】:

    标签: java


    【解决方案1】:

    您可以在 Java 7 中使用Files.setAttribute()

    FileTime fileTime = FileTime.fromMillis(millis);
    Files.setAttribute(path, "lastAccessTime", fileTime);
    

    字符串"lastAccessTime"可以在BasicFileAttributeView的描述中找到,这也提供了另一种设置该属性的方法(连同Files.getFileAttributeView()):

    Files.getFileAttributeView(path, BasicFileAttributeView.class).setTimes(null, fileTime, null);
    

    我不知道有任何纯 Java 方式可以在 Java 6 或更早版本中使用。

    【讨论】:

      【解决方案2】:

      我猜在文件上打开一个输入流应该会修改它的访问时间。但我不知道有任何 API 可以在 Java 6 中直接修改此属性。

      【讨论】:

        【解决方案3】:

        有一个私有 sun API 可以检查文件的访问时间 (How to prevent ShellFolder.getFolderColumns(...) from crashing a lot),但无法根据我找到的内容进行设置。虽然每次打开文件时都应该更新访问时间,所以不妨尝试用 Java 打开它。

        您可以检查旧的 JDIC 项目是否有选项:http://javadesktop.org/articles/jdic/index.html

        或者这个库:http://www.teamdev.com/jxfilewatcher/

        否则,您可能必须查找要支持的操作系统的控制台命令并从 Java 调用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-12-25
          • 1970-01-01
          • 2020-01-01
          • 1970-01-01
          • 2012-02-14
          • 1970-01-01
          • 2021-09-06
          相关资源
          最近更新 更多