2011-02-02 92 views
0

我在我的一臺Solaris服務器上安裝了NFS共享。路徑/APPDATA/ANP從服務器A安裝到服務器B.根據股份:setLastModified不能用於NFS共享

/appdata/anp

我有一個名爲

/appdata/anp/factory

文件夾在上面的目錄,我把具有需要在數據庫中導入/更新的數據的文件。在數據庫中導入數據後,根據導入數據的操作結果將文件移至成功/失敗目錄。

/appdata/anp/factory/success

/appdata/anp/factory/failure

我將文件移動到上述任一目錄並更新文件的上次修改時間設置爲當前系統時間使用:

file.setLastModified

其返回一個布爾值。問題是,每當我正在執行此更新操作時,都無法將該文件的時間戳更新爲當前系統時間。

有誰知道什麼是該方案中

file.setLastModified

返回失敗。我甚至檢查了NFS的權限,對我來說一切似乎都沒有問題。無論如何知道setLastModified可能會返回失敗的情況下?

請幫幫我我真的把我的頭髮拉在這一個! :(

+0

對於所有來這篇文章並閱讀這篇文章的人來說,似乎這個API在某些平臺和操作系統(在我的情況下是NFS掛載)上表現不佳。最後,我最終通過從Java產生一個系統級線程來使用Unix「touch」命令! – Cheshar 2011-05-04 21:04:40

回答

1

我有一個Unix文件系統上的類似的問題在我的情況,這是因爲UNIX是截斷最後修改毫秒,設置最後修改:

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

它影響到一個測試用例,它正在操作一個文件,然後通過file.lastModified()檢查更新,我在測試用例更新文件之前只添加了Thread.sleep(1100)解決了。​​

希望幫助旁邊的人。

+2

感謝分享!我希望它能幫助其他人面對類似的API問題 – Cheshar 2011-06-26 15:20:05