Pergunta

eu definir a data de modificação de um arquivo criado em Java para um número específico. Quando eu li a esse valor no Windows, recebo o mesmo valor para fora. No entanto, no Linux (Ubuntu) eu recebo um valor diferente. O valor para File.lastModified () está desativado por 9 horas, mas quando eu olho uma das propriedades do arquivo vejo que ele está fora por apenas 1 hora. Estou esperando o mesmo valor em toda a linha.

Estou errado em depender de este ser compatível e coerente? A javadoc é bastante inequívoca sobre o significado do método e não menciona possíveis incompatibilidades.

Foi útil?

Solução

É quase certamente uma questão de fuso horário. O método Java usos / espera GMT, o sistema operacional irá exibir a hora local, o que explica a diferença lá. Agora, a verdadeira questão é: como é o tempo armazenado no sistema de arquivos?

O sistema de arquivos que você está usando? Provavelmente FAT32 - que armazena data e hora em hora local, tornando-se assim difícil mantê-los consistente em OSs. Eu não tenho certeza de onde exatamente as coisas dão errado, mas pode ser um problema de configuração do sistema operacional ou um erro JVM - que JVM você está usando no Linux

?

Outras dicas

se você verificar o valor de retorno de setLastModified?

Returns:

true if and only if the operation succeeded; false otherwise

Meu palpite é que é um problema de fuso horário. Note que o javadoc diz que "milissegundos desde a época (00:00:00 GMT , 1 de janeiro de 1970)" (grifo nosso). É possível que o valor que passou para SetModified foi milissegundos desde a época, hora local ? Se assim for, então você seria uma hora fora desde horário local na Bélgica é GMT + 1. Isso explicaria o tempo na caixa de diálogo Propriedades.

Eu estou em uma perda para explicar a diferença 9 hora de lastModified (), a menos que java ou o sistema operacional é o cache um valor antigo de alguma forma.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top