ICR*_*ICR 4 java timezone datetime last-modified
我正在尝试监视文件以查找在Windows或Linux上运行的Java的更改.
目前,我正在研究轮询文件的最后修改属性,而不是挂钩到OS文件事件,以避免处理平滑API差异和处理异步事件.
我存储了new File("path").lastModified()一旦我处理完文件并lastModified每秒比较新结果的结果x.
我能否依赖这样一个事实:假设没有犯规并且有人手动修改时间戳,lastModified将永远增加?Java文档说这是GMT时代的偏移,所以即使进行时区调整,它也不会倒退?
好吧,有时,lastModified不会增加.所有关于时间分辨率和每个文件系统的分辨率是不同的:
FATs(FAT32,FAT16,FAT12)都有2 second时间分辨率,NTFS它是100 ns(是的,纳秒)1 second.因此,如果您的文件快速更改,lastModified则不会更改,并且您的显示器可能会丢失一些更改.
这也很棘手,因为如果你在不同的文件系统(如FAT32和NTFS)上有相同的文件,它们的lastModified时间会因时间分辨率的不同而不同.现在因为,你可能会对未发生的假文件更改作出反应- 它只是FAT32返回与时间不同的1秒的NTFS时间.Web服务器也是如此 - 如果您不知道服务器文件系统,那么您不知道HTTP标头中值的时间分辨率是多少.
解决方法是假设,如果存储值与FS值之间的差异小于3-4秒,则文件不会更改.这就是WebStart在服务器上检查新版本的JAR文件时的作用.