Wenn ich die mtime
einer Datei aus Java mit Files.getLastModifiedTime
lese, wird der Rückgabewert auf ganze Sekunden gekürzt. Ich weiß, dass dies auf anderen Systemen funktioniert, um MIMEs mit Millisekunden-Auflösung zu bekommen, also was könnte anders an meinem sein?
Hier ist ein vollständiger Standalone-Test, der kompiliert und ausführt:
%Vor% Die Ausgabe ist (mit meiner speziellen Testdatei) 1405602038000
, während ls
zeigt:
Ich würde erwarten, dass die Java-Ausgabe 1405602038413
ist.
Ich arbeite unter Linux mit ext4. Ich habe versucht sowohl openjdk 1.7 und Oracle jdk 1.8.
Die Möglichkeit, Dateizeitstempel auf * nix-Systemen mit höherer Genauigkeit zu erhalten, wurde in Java 8 von hinzugefügt Dieses commit erfordert jedoch auf der nativen Seite die Einhaltung von POSIX 2008:
%Vor%Und anscheinend wird die Java-Version, die Sie verwenden, nicht gesetzt, also ist ein Nanosekunden-Teil des Zeitstempels nicht verfügbar und bleibt Null.
Ich habe mir den Quellcode angeschaut:
Im Fall von Java 7 gibt die Methode den letzten modifizierten Zeitstempel mit einer Genauigkeit von 1 Sekunde an:
Im Fall von Java 8 sieht wie aus und sollte Mikrosekunden genau ergeben:
Aber in beiden Fällen scheint der Code keine Möglichkeit zu bieten, den Zeitstempel mit einer anderen Genauigkeit zu erhalten.
Tags und Links java file last-modified