質問

Javaで作成されたファイルの変更日を特定の番号に設定します。 Windowsでその値を読み取ると、同じ値が得られます。ただし、Linux(ubuntu)では異なる値が得られます。 File.lastModified()の値は9時間ずれていますが、ファイルのプロパティを見ると、1時間だけずれていることがわかります。私は全面的に同じ価値を期待しています。

これに互換性と一貫性があることに依存するのは間違っていますか? javadoc メソッドの意味についてはかなり明確であり、潜在的な非互換性については言及していません。

役に立ちましたか?

解決

これはほぼ間違いなくタイムゾーンの問題です。 JavaメソッドはGMTを使用/予想し、OSは現地時間を表示します。これは、現地時間の違いを説明します。さて、本当の問題は次のとおりです。時間はどのようにファイルシステムに保存されますか?

使用しているファイルシステムは何ですか?おそらくFAT32-タイムスタンプをローカル時間に保存するため、OS間で一貫性を保つのが難しくなります。正確にどこで問題が発生するのかわかりませんが、OS構成の問題またはJVMのバグである可能性があります-LinuxでどのJVMを使用していますか?

他のヒント

setLastModified の戻り値を確認しましたか?

返品:

true if and only if the operation succeeded; false otherwise

これはタイムゾーンの問題だと思います。 javadocには、「エポックからのミリ秒(00:00:00 GMT 、1970年1月1日)」と書かれていることに注意してください。 (強調を追加)。 setModifiedに渡した値がエポック(ローカル時間)からミリ秒だった可能性はありますか?その場合、ベルギーの現地時間はGMT + 1であるため、1時間外になります。これにより、プロパティダイアログで時間を説明できます。

javaまたはosが古い値を何らかの方法でキャッシュしていない限り、lastModified()との9時間の違いを説明できません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top