2012-09-24 85 views
0

我在使用Java刪除文件/文件夾時性能下降。使用Java 7刪除文件/文件夾

代碼是相當古老的,我想知道如果Java 7(我升級到)實際上提供性能改進,或者只是另一種語法。 (我不想重做所有東西,除非有好處)。我經常需要提取大型ZIP文件,然後刪除內容,遞歸時間很殘酷。

我也被困在Windows上。

謝謝

+5

請張貼代碼片段,你用它來刪除文件和文件夾。否則,我們將無法幫助您。 – Baz

+1

如果您的古代碼不使用NIO API,那麼使用Java 7切換到該API將帶來性能提升。 –

+0

爲了確保它對您的情況有所幫助,您可以下載並安裝JDK 7並編寫一個小程序進行測試。 – Jesper

回答

1

文件IO非常依賴於您的硬件性能。許多HDD可以執行80 - 120每秒IOPS。如果你想打開一個文件,你最多可以讀取每秒120個文件。要刪除文件,可能需要兩次更新或每秒最多刪除60個文件。有了這些限制,在軟件中幾乎沒有什麼可以做的,這將會產生任何影響。

但是,如果你有SSD,每秒可以做到80,000到230,000 IOPS(超過1000倍的增長)。至此你所做的軟件可能會有所作爲,但是當你處理壓縮文件時,最像這樣的CPU將成爲你的瓶頸。

2

我會建議使用某種已由社區提供的jar。 例如,共io.x-x.jar,彈簧core.jar添加

Eg, org.apache.commons.io.FileUtils; 
     FileUtils.copyDirectory(from, to); 
     FileUtils.deleteDirectory(childDir); 
     FileUtils.forceDelete(springConfigDir); 
     FileUtils.writeByteArrayToFile(file, data); 

     org.springframework.util.FileSystemUtils; 
     FileSystemUtils.copyRecursively(from, to); 
     FileSystemUtils.deleteRecursively(dir); 
+0

這是個好主意。我想知道這些解決方案中的任何一個是基於新的java.nio.file庫的Java 1.7嗎?那麼Apache Commons FileUtils呢? – djangofan