2017-03-15 2 views
0

J'écris un test unitaire où deux fichiers sont écrits avec environ 512Kb de données. Je leur écris l'un après l'autre. J'ai pensé que puisqu'ils sont écrits séquentiellement, le fichier deux serait plus long de quelques millisecondes que le fichier un (mon hypothèse ici est que l'écriture de 512 Ko prendrait au moins 1 milliseconde). Cependant, la fonction lastModified() donne le même temps pour les deux. Je suppose que cela signifie que les deux fichiers ont été écrits en moins d'une milliseconde, donc en même temps pour les deux, mais cela semble improbable. Quoi d'autre pourrait faire que les deux fichiers aient le même temps modifié?Deux fichiers avec le même temps modifié?

public void Info_FullLogWrittenToFileOneAndTwo_TestStringInLogOne() { 
    DevilLog log = DevilLog.getLogger(appContext, LOG_FILE_NAME, LogFileTest.class.getSimpleName()); 
    clearAllLogFiles(); 
    fillLogToMaxSize(LOG_ONE_NAME); 
    fillLogToMaxSize(LOG_TWO_NAME); 
    ... 
} 

// in another file... 
long logOneModifiedTime = logOne.lastModified(); 
long logTwoModifiedTime = logTwo.lastModified(); 

File chosenFile; 
if (logOneModifiedTime >= logTwoModifiedTime) // modified time is the same 

fillLogToMaxSize est un simple écriture à un fichier en utilisant FileWriter. Edit: Hm, écrire 512 Ko va probablement être différentes vitesses en fonction de la vitesse du processeur, et la vitesse d'écriture du disque dur. N'est-il pas si farfelu de penser que 512 Ko pourrait prendre moins d'une milliseconde sur un Core i5 en utilisant un SSD?

+2

Etes-vous sûr que le système de fichiers conserve les temps de modification à une précision de l'ordre de la milliseconde? Normalement ça va juste en secondes. – Henry

+1

Je ne sais pas si cela s'applique à Android, mais voir http://stackoverflow.com/questions/24804618/get-file-mtime-with-millisecond-resolution-from-java –

Répondre

0

Le problème était la précision à la milliseconde comme Henry et Michael Burr l'ont déclaré.