2009-08-04 2 views
4

Я установил дату изменения файла, созданного на Java, на определенный номер. Когда я прочитал это значение в Windows, я получаю то же значение. Однако в Linux (ubuntu) я получаю другое значение. Значение для File.lastModified() отключено на 9 часов, но когда я просматриваю свойства файла, я вижу, что он отключен только на 1 час. Я ожидаю того же значения по всем направлениям.Дата изменения файла в Java

Неправильно ли я полагаться на совместимость и согласованность? javadoc довольно однозначен по смыслу метода и не упоминает потенциальных несовместимостей.

ответ

3

Это почти наверняка проблема часового пояса. Метод Java использует/ожидает GMT, ОС будет отображать локальное время, что объясняет разницу. Теперь реальный вопрос: как время хранится в файловой системе?

Какую файловую систему вы используете? Вероятно, FAT32, который хранит временные метки по местному времени, что затрудняет их согласование между ОС. Я не уверен, где именно все пойдет не так, но это может быть проблема конфигурации ОС или ошибка JVM - какой JVM вы используете в Linux?

+0

Файл находится на USB-накопителе, поэтому я не знаю, какая там файловая система. Но смысл часового пояса имеет смысл. –

+1

USB-накопители почти всегда используют FAT32. –

0

Вы проверили возвращаемое значение setLastModified?

Возвращает:

true if and only if the operation succeeded; false otherwise 
+0

Дата значительно отличается, поэтому что-то определенно изменилось. –

0

Я предполагаю, что это проблема с часовым поясом. Обратите внимание, что javadoc говорит «миллисекунды с эпохи» (00:00:00 GMT, 1 января 1970 года) »(выделено мной). Возможно ли, что значение, которое вы передали в setModified, составляло миллисекунды с эпохи, по местному времени? Если да, то вы будете на один час с местного времени в Бельгии GMT + 1. Это объясняет время в диалоговом окне свойств.

Я затрудняюсь объяснить разницу в 9 часов от lastModified(), если java или os не кэшируют старое значение каким-то образом.

+0

Значение часовой пояс имеет смысл. Я займусь этим. –

Смежные вопросы