2012-04-11 141 views
2

Apache的FileUtils中的方法是否執行同步(阻塞)I/O?Apache的FileUtils中的方法執行同步(阻塞)I/O嗎?

我正在調用FileUtils。 copyDirectoryToDirectory。在我的下一行中,我想刪除我複製的目錄。

例子:

FileUtils.copyDirectoryToDirectory(source, destination); 
FileUtils.deleteDirectory(source); 

只是想確認這是 「安全」 和異步(非阻塞)I/O沒有發生。

謝謝。

回答

2

兩件事情:

  1. FileUtils不是標準JDK的一部分,它在Apache Commons IO library類。
  2. 您提到的操作是不是使用非阻塞IO。

所以要回答你的問題,是的,你的整體操作是安全的。

+0

非常感謝。我問的原因是因爲在第二行被執行後我們有時會遇到這個錯誤:java.io.IOException:無法刪除目錄。不知道爲什麼。 – 2012-04-11 19:09:08

+0

這應該是:無法刪除目錄。不是一個非常有用的信息。我們認爲這可能是由於目錄中的文件被鎖定。文件/目錄存儲在Mac OS X系統上。在我們將操作系統從10.4升級到10.6後,我們的用戶偶爾會在使用我們的系統嘗試刪除時出現此錯誤。此時,我們不確定如何調試,因爲我們無法在本地系統上重現問題。 – 2012-04-12 16:14:55

+0

如果文件句柄在操作系統級別仍處於打開狀態,則可以嘗試在複製和刪除之間稍稍延遲一段時間。另外,您是否有保證用戶在其他程序中打開的'source'目錄中沒有任何文件? – Perception 2012-04-12 16:17:03