我有一个安装在我的Solaris服务器上的NFS共享。路径/ appdata / anp从服务器A装载到服务器B。在共享下:

/appdata/anp

我有一个名为

/appdata/anp/factory

在上面的目录中,我将包含需要导入/更新的数据的文件放入数据库中。将数据导入数据库后,我根据导入数据的操作结果将文件移动到成功/失败目录。

/appdata/anp/factory/success

/appdata/anp/factory/failure

我将文件移动到上述两个目录中,并使用以下命令将文件的最后修改时间更新为当前系统时间:

file.setLastModified

返回一个布尔值。问题是,每当我执行此更新操作时,都无法将该文件的时间戳更新为当前系统时间。

有谁知道在什么情况下

file.setLastModified

返回失败。我什至检查了NFS权限,一切对我来说似乎还可以。无论如何,有没有知道setLastModified可能返回失败的情况?

请帮帮我,我真的是把我的头发拉了!! :(

最佳答案

我在Unix文件系统上有类似的问题。在我的情况下,这是因为unix截断了最后修改的毫秒数并将最后修改的值设置为:

System.currentTimeMillis()-System.currentTimeMillis()%1000

它正在影响一个测试用例,该用例正在处理文件,然后通过file.lastModified()检查更新。我只是在测试用例中更新文件之前添加了Thread.sleep(1100),所有问题都得到解决。

希望对下一个人有帮助。

07-28 14:11