我在使用Java刪除文件/文件夾時性能下降。使用Java 7刪除文件/文件夾
代碼是相當古老的,我想知道如果Java 7(我升級到)實際上提供性能改進,或者只是另一種語法。 (我不想重做所有東西,除非有好處)。我經常需要提取大型ZIP文件,然後刪除內容,遞歸時間很殘酷。
我也被困在Windows上。
謝謝
我在使用Java刪除文件/文件夾時性能下降。使用Java 7刪除文件/文件夾
代碼是相當古老的,我想知道如果Java 7(我升級到)實際上提供性能改進,或者只是另一種語法。 (我不想重做所有東西,除非有好處)。我經常需要提取大型ZIP文件,然後刪除內容,遞歸時間很殘酷。
我也被困在Windows上。
謝謝
文件IO非常依賴於您的硬件性能。許多HDD可以執行80 - 120每秒IOPS。如果你想打開一個文件,你最多可以讀取每秒120個文件。要刪除文件,可能需要兩次更新或每秒最多刪除60個文件。有了這些限制,在軟件中幾乎沒有什麼可以做的,這將會產生任何影響。
但是,如果你有SSD,每秒可以做到80,000到230,000 IOPS(超過1000倍的增長)。至此你所做的軟件可能會有所作爲,但是當你處理壓縮文件時,最像這樣的CPU將成爲你的瓶頸。
我會建議使用某種已由社區提供的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);
這是個好主意。我想知道這些解決方案中的任何一個是基於新的java.nio.file庫的Java 1.7嗎?那麼Apache Commons FileUtils呢? – djangofan
請張貼代碼片段,你用它來刪除文件和文件夾。否則,我們將無法幫助您。 – Baz
如果您的古代碼不使用NIO API,那麼使用Java 7切換到該API將帶來性能提升。 –
爲了確保它對您的情況有所幫助,您可以下載並安裝JDK 7並編寫一個小程序進行測試。 – Jesper