file.lastModified()
未更新,虽然我更改了文件内容,但我在Windows上工作
我使用java的文件,可能是什么问题?我是否需要从代码中进行某种刷新?
答案 0 :(得分:1)
此行为取决于平台。在关闭之前,Windows不会更新正在修改的文件的元数据。
答案 1 :(得分:1)
Java,至少1.8似乎是缓存文件属性。我创建了一个C ++应用程序,它使用Win32的FindFirstFile来获取文件信息,并验证每次更新最后修改的值。确实如此。但Java的文件和文件似乎并不总能获得最新的价值。甚至在写入之间尝试了一秒钟的延迟,并且它并没有总是得到更新。我正在使用Files.write来修改文件,所以我希望它能够关闭它。不确定在Java中是否有一个很好的解决方案,这是不幸的。
更新:
我发现Files.getLastModifiedTime是一个解决方案。但它仅适用于Java 1.8或更高版本。
答案 2 :(得分:0)
如果您要设置lastModified
时间。它应该工作正常
File file =new File("fileName");
// other operations
file.setLastModified(new Date().getTime()); // set time
现在你可以回到lastUpdated
。
file.lastModified();
答案 3 :(得分:0)
如果文件是从类路径资源中加载的,则files.lastModified()
可能无法在进行编辑后检测到更改。
但是,当从应用程序外部加载文件时,在我的情况下(Windows 10,Java 10)它运行得很好。
我已经通过在预定线程上运行files.lastModified()
对其进行了测试,文件引用在JVM启动时被加载了一次。
因此,取决于文件的加载方式,它可能会影响文件修改的读取方式。