Quando ho letto il di un file da Java utilizzando Files.getLastModifiedTime
, il valore restituito viene troncato a interi secondi. So che questo funziona su altri sistemi per ottenere mtimes con risoluzione al millisecondo, quindi cosa potrebbe essere diverso dal mio?Ottieni file mtime con una risoluzione al millisecondo da Java
Ecco un test stand-alone completo che riunisce e gestisce:
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());
}
}
L'uscita è (con il mio particolare file di prova) 1405602038000
, mentre ls
spettacoli:
$ ls --full-time /tmp/test
-rw-rw-r-- 1 daniel daniel 0 2014-07-17 16:00:38.413008992 +0300 /tmp/test
mi aspetterei Java uscita per essere 1405602038413
.
Sono in esecuzione su Linux con ext4. Ho provato sia openjdk 1.7 che Oracle jdk 1.8.
hai frainteso. Il valore restituito da 'time.toMillis' è già troncato a risoluzione del secondo intero (cioè termina sempre in tre zeri). Questo è ciò che è sbagliato. – danarmak
Sembra strano, perché quando lo provo sul mio computer, ottengo una risoluzione al millisecondo. – lerobyte
Sono consapevole che funziona per gli altri (ho modificato la domanda per chiarirlo), ma non funziona qui e sto cercando di capire perché. – danarmak