- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在尝试监视文件以了解在 Windows 或 Linux 上运行的 Java 中的更改。
目前,我正在研究轮询文件的最后修改属性,而不是 Hook 操作系统文件事件,以避免处理 API 差异和处理异步事件。
一旦我处理完文件并比较新的 lastModified
结果,我就会存储 new File("path").lastModified()
的结果 x
秒。
我可以相信这样一个事实吗?假设没有犯规并且有人手动修改了时间戳,lastModified 会一直增加吗? Java 文档说它是 GMT 纪元的偏移量,因此即使调整时区也不会倒退?
最佳答案
嗯,有时候,lastModified
不会增加。一切都与时间分辨率有关,每个文件系统的分辨率都不同:
FAT
(FAT32、FAT16、FAT12)都有 2 秒
时间分辨率,NTFS
,它是100 ns
(是的,纳秒)1 秒
。因此,如果您的文件会快速更改,lastModified
将不会更改,并且您的监视器 可能会丢失一些更改。
这也很棘手,因为如果您在不同的文件系统(如 FAT32 和 NTFS)上有相同的文件,它们的 lastModified
时间将因时间分辨率不同而不同。现在正因为如此,您可能会对未发生的假文件更改使用react - 它只是 FAT32
返回的时间与 NTFS 相差 1 秒
时间。 Web 服务器也是如此 - 如果您不知道服务器文件系统,那么您就不知道 HTTP header 中值的时间分辨率是多少。
解决方法是假设,如果存储值与 FS 值之间的差异小于 3-4 秒,则文件没有更改。这就是 WebStart
在服务器上检查 JAR 文件的新版本时所做的事情。
关于java - File.lastModified 值会一直增加吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11137948/
我有一个在 Android 市场上相当流行的应用程序,它允许数以万计的用户按下一个按钮并向它发出语音命令。然后我就可以做很多不同的事情,比如给他们提供当前的天气预报等等...... 无论如何,我的应用
令人惊讶的是,标题基本上解释了它。我们有一个我们的客户制作的页面,我们正在重新创建该页面。 页面高度会一直增加,直到(我假设是这样)浏览器达到它的极限。我已经尝试过 Firebug 和 W3 验证器,
我是 react-native 的新手,试图创建我自己的组件,但它一直显示一个空屏幕。 这是我的组件代码 class BoxComponent extends Component { cons
我正在为我的 PHP 元素创建一个非常简单的博客,但遇到了一个简单的问题。我无法让我的页眉图像一直 float 。我有一个横幅,左边有一些文字,我有一个 1px 的切片,在可以选择的任何分辨率的宽度上
为什么我可以在另一个 Controller 的 View 中访问一个 Controller 的辅助方法?有没有办法在不破解/修补 Rails 的情况下禁用它? 最佳答案 @George Schreib
我正在使用带有最新 ADT 插件的 Eclipse Kepler SP2。每隔一分钟 Eclipse 就会说“为 Android 4.4.2 加载数据”并阻止我想做的一切。我在不同的文件夹中有几个 E
我是一名优秀的程序员,十分优秀!