我想知道哪些是複製大量文件的最佳方式。java - 有效的文件複製
回答
如果你在本地複製文件,你應該使用FileChannel.transferFrom()或FileChannel.transferTo()。例如:
FileInputStream is = new FileInputStream(file); FileOutputStream fos = new FileOutputStream(oFile); FileChannel f = is.getChannel(); FileChannel f2 = fos.getChannel(); f.transferTo(0, f.size(), f2); f2.close(); f.close();
在許多平臺上,複製將通過DMA發生,大約儘可能快。
如果要複製文件在網絡上,那麼你是在一個不同的情況。在一些文件可能已經存在的情況下,那麼你應該看看rsync,因爲它可以避免傳輸兩側相同的文件的部分。如果最常見的情況是這些文件不會在目標機器上存在,那麼您將需要使用類似scp的文件。對此,請參閱this問題。
+1:愛上DMA。但恐怕大多數孩子都不太瞭解。 http://en.wikipedia.org/wiki/Direct_memory_access – 2009-12-28 18:38:11
「最佳」 需要澄清。
我會委託給rsync的是在拷貝大量文件有很多的選擇非常好。我沒有意識到rsync的Java實現。
像往常一樣,存在的Jakarta Commons:http://commons.apache.org/io/api-release/org/apache/commons/io/FileUtils.html
在撰寫本書的時候,FileUtils.copyFile()使用IOUtils.copy(),它只是從InputStream讀取和寫入到的OutputStream。它沒有做任何事情來檢測你有一個FileInputStream和一個FileOutputStream的特殊情況,所以可以通過通道進行更快的複製。所以,如果目標是儘可能快地完成複製*和*副本是本地的,那麼這將不是最快的方式。 不會是最快的方法。 – uckelman 2009-11-10 11:05:59
- 1. 有效複製多個文件
- 2. 的Java文件複製扭曲文件
- 3. 複製文件到用java
- 4. java id3tag複製mp3文件
- 5. Java - 複製Jar文件夾
- 6. Java Files.copy()不復制文件
- 7. 從一個文件到另一個文件的高效複製
- 8. 的Maven不會複製非Java文件
- 9. 的Java複製文件強行
- 10. 不完整的文件複製Java NIO
- 11. 使用java 7複製文件方法將文件複製到文件夾
- 12. 複製文件VS不復制文件?
- 13. java中的文件複製問題[沒有這樣的文件或目錄]
- 14. java android複製文件資產
- 15. 在Java中複製驗證文件
- 16. 從Java程序Linux複製文件
- 17. Java:在目錄之間複製文件
- 18. 如何在java中複製文件
- 19. 在Java中複製文件使用JNI
- 20. 將文件複製到數組中(Java)
- 21. Java,將文件複製到jre
- 22. 如何用Java複製zip文件
- 23. 如何有效地在同一個文件系統內複製文件
- 24. java有效獲取文件大小
- 25. 在JAVA中有效播放.wav文件
- 26. 的Java複製文件夾排除一些內部文件
- 27. 如何在java中的資源文件夾中複製文件
- 28. 複製目錄中的所有文件
- 29. Java如何有效地搜索類文件的jar文件?
- 30. powershell複製文件夾中的所有文件夾和文件
從哪裏複製到哪裏?本地?通過網絡? – 2009-11-10 08:57:50
只在本地複製 – michal 2009-11-10 09:03:25
是的,您需要詳細說明。你的目標是什麼? – 2009-11-10 09:12:24