【问题标题】:setLastModified not working on an NFS sharesetLastModified 不适用于 NFS 共享
【发布时间】:2011-02-02 11:45:56
【问题描述】:

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

请帮帮我,我真的很担心这个!! :(

【问题讨论】:

  • 对于所有来到这篇文章并阅读了这篇文章的人来说,这个 API 在某些平台和操作系统(在我的例子中是 NFS 挂载)上似乎表现不佳。最后,我最终通过从 Java 生成系统级线程来使用 Unix“触摸”命令!

标签: java nfs solaris-10 nfsclient


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢分享!我希望它可以帮助其他遇到此 API 类似问题的人
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
相关资源
最近更新 更多