获取linux上java文件的更改时间而不是修改时间

获取linux上java文件的更改时间而不是修改时间,java,linux,Java,Linux,java中有没有办法在linux上访问文件的更改时间属性 我尝试使用java.io.File.lastModified()方法,但该方法只返回文件的modify time属性 我想做的是检测文件上传到linux服务器的时间。我注意到modify time属性在我的本地机器上有文件修改的时间戳,然而,change time属性是上传到linux服务器的时间 谢谢您的建议。您可以使用以下方法获取文件的更改时间 Files.getAttribute(new File("<path to a fi

java中有没有办法在linux上访问文件的更改时间属性

我尝试使用java.io.File.lastModified()方法,但该方法只返回文件的modify time属性

我想做的是检测文件上传到linux服务器的时间。我注意到modify time属性在我的本地机器上有文件修改的时间戳,然而,change time属性是上传到linux服务器的时间


谢谢您的建议。

您可以使用以下方法获取文件的更改时间

Files.getAttribute(new File("<path to a file>").toPath(),"unix:ctime")

并没有“java”方法可以做到这一点,正如在类似问题上所描述的:并没有简单的方法可以在更改时间访问文件。您可能能够从JVM的linux实现中获取一些东西(对此表示怀疑),或者编写一个shell脚本来读取该属性。或者更改uploader,使其每次都强制设置文件的上次修改时间。但为什么要特别注意这是一个更改时间呢?上次修改时间捕获上次更改文件内容的时间。如果我没有更改任何内容,你为什么要做出反应?我有一个程序,可以将时间从文件存储到数据库(当前为修改时间)。可能会有更多人使用该文件的不同版本,他们会将该文件上载到linux服务器。我想存储上次上传的时间(更改时间),而不是上次修改的时间(以防有人在修改后几个小时后上传文件)。在这种情况下,必须在修改后立即上载文件。这是因为FileTime的toString方法使用UTC作为时区,示例代码已更新。
   import java.util.*;
import java.io.*;
import java.nio.file.*;
import java.nio.file.attribute.*;
public class Test{
    public static void main(String[] args){
        try
                {
                   System.out.println(Files.getAttribute(new File("b").toPath(),"unix:ctime"));
                   System.out.println(new Date(((FileTime)Files.getAttribute(new File("b").toPath(),"unix:ctime")).toMillis()));
                }
                catch (Exception e)
                {
                    e.printStackTrace();
                }
    }
}


When running `LANG=en_us.UTF-8 stat b` on the console, the output is:

      File: 'b'
      Size: 0               Blocks: 0          IO Block: 4096   regular empty file
    Device: fd00h/64768d    Inode: 101210225   Links: 1
    Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
    Context: unconfined_u:object_r:admin_home_t:s0
    Access: 2018-06-26 10:16:18.649378326 +0800
    Modify: 2018-06-26 10:16:18.649378326 +0800
    Change: 2018-06-26 10:17:06.009384678 +0800
     Birth: -

Running the example code with the `Test` class provides the following output:

    {ctime=2018-06-26T02:17:06.009384Z}

As you may see it changed the change time hour from `10` to `02`.