0

我的一台 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可能返回失败的情况吗?

请帮帮我,我真的在这个问题上拉扯我的头发!:(

4

1 回答 1

1

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

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

它影响了一个测试用例,它正在操作一个文件,然后通过 file.lastModified() 检查更新。我只是在更新测试用例中的文件之前添加了 Thread.sleep(1100) ,一切都已解决。

希望对下一个人有所帮助。

于 2011-06-24T09:11:57.837 回答