java - 如何获取文件的最后更改时间(Unix + Java)

标签 java file unix stat

在 Unix 中,上次更改时间和上次修改时间是不同的。例如,当使用 stat 我可以得到:

Access: 2016-01-18 10:50:01.624303144 +0100
Modify: 2016-01-12 13:34:18.274639073 +0100
Change: 2016-01-15 13:13:52.881401711 +0100

当我用 Java 编程时,我可以很容易地获得最后修改时间。但是如何获取文件的最后更改时间呢?

最佳答案

设法找到一个缓慢的解决方案。将它复制到这里以防将来有人遇到同样的问题。

//Get time since epoch for a file
private static long getLastChanged(final String fileName) {
    try {
        ProcessBuilder processBuilder = new ProcessBuilder("stat", fileName, "-c", "%Z");
        Process process = processBuilder.start();
        int errorCode = process.waitFor();
        if (errorCode == 0) {
            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
            String line;
            while ((line = bufferedReader.readLine()) != null) {
                return Integer.parseInt(line);
            }
        } else {
            System.out.println("Stat failed with error message: " + errorCode);
        }
    } catch (Exception e) {
        System.out.println("Failed to do stat on file: " + e);
    }
    return 0;
}

关于java - 如何获取文件的最后更改时间(Unix + Java),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34852515/

相关文章:

MacOSX - 与应用程序关联的文件扩展名 - 以编程方式

实时捕捉关键

java - 如何将 mysql 驱动程序 jar 添加到项目作为 github 存储库的依赖项?

用于在 aws tomcat elastic beanstalk 上托管的 java 对象序列化

java - Android - 读取文本文件时内存不足

security - 带有 ssl HTTP 代理和数字证书的 Spring ws

html - zlib 压缩的 html 页面的文件扩展名?

java - (ClassName)$.class 文件在类文件夹中? (网 bean )

unix - FreeBSD 中 copyout() 的实现

linux - Linux 中是否有一个变量显示我上次打开机器的时间?