file.lastModified()函数不提供更新的值

时间:2013-12-10 10:07:20

标签: java

file.lastModified()未更新,虽然我更改了文件内容,但我在Windows上工作 我使用java的文件,可能是什么问题?我是否需要从代码中进行某种刷新?

4 个答案:

答案 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启动时被加载了一次。

因此,取决于文件的加载方式,它可能会影响文件修改的读取方式。