Java中的文件修改日期

时间:2009-08-04 13:34:24

标签: java file compatibility

我将用Java创建的文件的修改日期设置为特定数字。当我在Windows上读出该值时,我得到相同的值。但是,在Linux(ubuntu)上,我获得了不同的价值。 File.lastModified()的值关闭了9个小时,但是当我查看文件属性时,我发现它只关闭了1个小时。我期待全面的价值观。

依赖于兼容性和一致性,我错了吗? javadoc对于方法的含义非常明确,并没有提到潜在的不兼容性。

3 个答案:

答案 0 :(得分:3)

这几乎肯定是一个时区问题。 Java方法使用/期望GMT,操作系统将显示本地时间,这说明了那里的差异。现在真正的问题是:如何将时间存储在文件系统中?

您使用的文件系统是什么?可能是FAT32 - 它以本地时间存储时间戳,因此很难在操作系统之间保持一致。我不确定哪里出错了,但它可能是操作系统配置问题或JVM错误 - 你在Linux上使用哪个JVM?

答案 1 :(得分:0)

你检查了setLastModified的返回值吗?

<强>返回:

true if and only if the operation succeeded; false otherwise

答案 2 :(得分:0)

我的猜测是这是一个时区问题。请注意,javadoc表示“自纪元以来的毫秒(00:00:00 GMT ,1970年1月1日)”(重点补充)。传递给setModified的值是否可能是自纪元以来的毫秒,本地时间?如果是这样,那么你将在一小时后离开,因为比利时当地时间是GMT + 1.这将解释属性对话框中的时间。

我无法解释与lastModified()的9小时差异,除非java或os以某种方式缓存旧值。