Pregunta

Establezco la fecha de modificación de un archivo creado en Java a un número específico. Cuando leo ese valor en Windows, obtengo el mismo valor. Sin embargo, en Linux (ubuntu) obtengo un valor diferente. El valor de File.lastModified () está desactivado por 9 horas, sin embargo, cuando miro las propiedades del archivo, veo que está desactivado solo por 1 hora. Espero el mismo valor en todos los ámbitos.

¿Me equivoco al depender de que esto sea compatible y consistente? El javadoc es bastante inequívoco en el significado del método y no menciona posibles incompatibilidades.

¿Fue útil?

Solución

Es casi seguro un problema de zona horaria. El método Java usa / espera GMT, el sistema operativo mostrará la hora local, lo que explica la diferencia allí. Ahora la verdadera pregunta es: ¿cómo se almacena el tiempo en el sistema de archivos?

¿Qué sistema de archivos estás usando? Probablemente FAT32, que almacena las marcas de tiempo en la hora local, lo que dificulta mantenerlas consistentes en todos los sistemas operativos. No estoy seguro de dónde exactamente salen mal las cosas, pero puede ser un problema de configuración del sistema operativo o un error de JVM: ¿qué JVM está utilizando en Linux?

Otros consejos

¿verificó el valor de retorno de setLastModified ?

Devoluciones :

true if and only if the operation succeeded; false otherwise

Supongo que es un problema de zona horaria. Tenga en cuenta que el javadoc dice '' milisegundos desde la época (00:00:00 GMT , 1 de enero de 1970) " (énfasis añadido). ¿Es posible que el valor que pasó a setModified fuera milisegundos desde la época, hora local ? Si es así, estaría una hora fuera ya que la hora local en Bélgica es GMT + 1. Eso explicaría la hora en el cuadro de diálogo de propiedades.

No puedo explicar la diferencia de 9 horas de lastModified (), a menos que Java o el sistema operativo guarden en caché un valor antiguo de alguna manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top