Wenn ich die mtime
einer Datei aus Java mit Files.getLastModifiedTime
lesen, wird der Rückgabewert auf ganze Sekunden abgeschnitten. Ich weiß, dass dies auf anderen Systemen funktioniert, um MIMEs mit Millisekundenauflösung zu bekommen, also was könnte anders an meinem sein?Holen Sie sich Datei Mtime mit Millisekunden Auflösung von Java
ist der komplette Standalone-Test, der kompiliert und läuft:
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());
}
}
Der Ausgang ist (mit meiner speziellen Testdatei) 1405602038000
, während ls
zeigt:
$ ls --full-time /tmp/test
-rw-rw-r-- 1 daniel daniel 0 2014-07-17 16:00:38.413008992 +0300 /tmp/test
Ich würde die Java erwarten Ausgabe soll 1405602038413
sein.
Ich bin auf Linux mit ext4 ausgeführt. Ich habe versucht sowohl openjdk 1.7 und Oracle jdk 1.8.
Sie mißverstehen gibt. Der von 'time.toMillis' zurückgegebene Wert ist bereits auf die Auflösung der ganzen Sekunde verkürzt (d. H. Endet immer in drei Nullen). Das ist falsch. – danarmak
Das scheint seltsam, denn wenn ich es auf meinem Computer versuche, bekomme ich Millisekunden Auflösung. – lerobyte
Ich bin mir bewusst, dass es für andere funktioniert (Ich habe die Frage bearbeitet, um das zu klären), aber es funktioniert hier nicht und ich versuche herauszufinden, warum. – danarmak