Frage

Ich habe das Änderungsdatum einer Datei in Java zu einer bestimmten Nummer erstellt. Wenn ich diesen Wert auf Windows auslesen, erhalte ich den gleichen Wert aus. Doch auf Linux (ubuntu) bekomme ich einen anderen Wert. Der Wert für File.lastModified () ist um 9 Stunden aus, aber wenn ich eine die Dateieigenschaften sehe ich sehe, dass es von nur 1 Stunde ausgeschaltet ist. Ich bin den gleichen Wert auf der ganzen Linie erwartet.

Bin ich falsch auf diese kompatibel und konsistent hängen? Die javadoc ziemlich eindeutig auf die Bedeutung des Verfahrens ist, und erwähnt nicht, mögliche Inkompatibilitäten.

War es hilfreich?

Lösung

Es ist fast sicher eine Zeitzone Problem. Die Java-Methode verwendet / erwartet GMT, wird das O Ortszeit angezeigt werden, die dort für den Unterschied ausmacht. Nun ist die eigentliche Frage ist: Wie wird die Zeit in dem Dateisystem gespeichert?

Welches Dateisystem verwenden Sie? Wahrscheinlich FAT32 - die Zeitstempel in lokaler Zeit speichert, wodurch es schwer, sie konsistent über OSs zu halten. Ich bin mir nicht sicher, wo genau die Dinge schief gehen, aber es kann ein Betriebssystem-Konfigurationsproblem oder ein JVM Fehler sein - die JVM werden Sie unter Linux mit

?

Andere Tipps

Haben Sie den Rückgabewert von setLastModified?

Returns:

true if and only if the operation succeeded; false otherwise

Meine Vermutung ist, dass es sich um eine Zeitzone Problem. Beachten Sie, dass die javadoc sagt "Millisekunden seit Beginn der Epoche (00.00.00 GMT , 1. Januar 1970)" (Hervorhebung hinzugefügt). Ist es möglich, dass der Wert, den Sie in SetModified vergangen waren Millisekunden seit Beginn der Epoche Ortszeit ? Wenn ja, dann würden Sie eine Stunde aus, da Ortszeit in Belgien ist GMT + 1, dass die Zeit im Eigenschaftendialog erklären würde.

ich ratlos bin die 9 Stunden Differenz von lastModified () zu erklären, es sei denn, Java oder das o irgendwie einen alten Wert zwischenspeichert.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top