【发布时间】:2014-09-08 09:19:20
【问题描述】:
当我使用 Files.getLastModifiedTime 从 Java 读取文件的 mtime 时,返回值被截断为整秒。我知道这适用于其他系统以获得毫秒分辨率的 mtime,那么我的有什么不同呢?
这是一个完整的独立测试,可以编译并运行:
import java.nio.file.attribute.FileTime;
import java.nio.file.Files;
import java.nio.file.Paths;
public class Test {
public static void main(String[] args) throws java.io.IOException {
FileTime timestamp = Files.getLastModifiedTime(Paths.get("/tmp/test"));
System.out.println(timestamp.toMillis());
}
}
输出是(带有我的特定测试文件)1405602038000,而ls 显示:
$ ls --full-time /tmp/test
-rw-rw-r-- 1 daniel daniel 0 2014-07-17 16:00:38.413008992 +0300 /tmp/test
我希望 Java 输出为 1405602038413。
我在带有 ext4 的 Linux 上运行。我尝试了 openjdk 1.7 和 Oracle jdk 1.8。
【问题讨论】:
标签: java file last-modified