Java: 複製檔案最快方法
不考慮多執行緒優化,單執行緒檔案複製最快的方法是(檔案越大該方法越有優勢,一般比常用方法快30+%):
private static void nioTransferCopy(File source, File target) { FileChannel in = null; FileChannel out = null; FileInputStream inStream = null; FileOutputStream outStream = null; try { inStream = new FileInputStream(source); outStream = new FileOutputStream(target); in = inStream.getChannel(); out = outStream.getChannel(); in.transferTo(0, in.size(), out); } catch (IOException e) { e.printStackTrace(); } finally { close(inStream); close(in); close(outStream); close(out); } }
如果需要監測複製進度,可以用第二快的方法(留意buffer的大小,對速度有很大影響):
private static void nioBufferCopy(File source, File target) { FileChannel in = null; FileChannel out = null; FileInputStream inStream = null; FileOutputStream outStream = null; try { inStream = new FileInputStream(source); outStream = new FileOutputStream(target); in = inStream.getChannel(); out = outStream.getChannel(); ByteBuffer buffer = ByteBuffer.allocate(4096); while (in.read(buffer) != -1) { buffer.flip(); out.write(buffer); buffer.clear(); } } catch (IOException e) { e.printStackTrace(); } finally { close(inStream); close(in); close(outStream); close(out); } }
常用的方法1是:
private static void customBufferBufferedStreamCopy(File source, File target) { InputStream fis = null; OutputStream fos = null; try { fis = new BufferedInputStream(new FileInputStream(source)); fos = new BufferedOutputStream(new FileOutputStream(target)); byte[] buf = new byte[4096]; int i; while ((i = fis.read(buf)) != -1) { fos.write(buf, 0, i); } } catch (Exception e) { e.printStackTrace(); } finally { close(fis); close(fos); } }
常用的方法2是:
private static void customBufferStreamCopy(File source, File target) { InputStream fis = null; OutputStream fos = null; try { fis = new FileInputStream(source); fos = new FileOutputStream(target); byte[] buf = new byte[4096]; int i; while ((i = fis.read(buf)) != -1) { fos.write(buf, 0, i); } } catch (Exception e) { e.printStackTrace(); } finally { close(fis); close(fos); } }
相關文章
- java 位元組流檔案複製方法總結Java
- Java-IO:複製檔案Java
- Java NIO複製檔案功能Java
- [java IO流]之檔案複製Java
- MySQL複製--最快的從庫搭建方法(tar包)MySql
- Java IO 流之拷貝(複製)檔案Java
- java複製檔案時遇到的問題Java
- nc複製檔案
- 複製檔案githubGithub
- Windows 7 複製檔案慢的解決方法Windows
- win10 dos命令怎麼複製檔案_win10 dos命令複製檔案操作方法Win10
- Java I/O流 複製檔案速度對比Java
- Java實現檔案複製的四種方式Java
- 如何批量複製多個檔案到多個目錄中(批量複製檔案,多對多檔案高效操作的方法)
- ubuntu下檔案複製Ubuntu
- 隱藏檔案複製
- Java位元組流檔案複製及效率比較Java
- Java中實現複製檔案或資料夾Java
- 利用java本地複製檔案及資料夾 (轉)Java
- mysql檔案複製遷移MySql
- Go語言複製檔案Go
- C# 批量複製檔案C#
- unix下複製檔案(轉)
- Python 中最快解壓 zip 檔案的方法Python
- 用什麼方法對log檔案分析速度最快?
- Java引用複製、淺複製、深複製Java
- git複製一份檔案Git
- 二進位制檔案複製
- php複製目錄及檔案PHP
- 可能是目前最快的struct複製庫Struct
- java檔案和資料夾複製、刪除、移動操作Java
- java檔案複製方式在100MB檔案條件下速度的比較Java
- win10複製不了檔案怎麼辦 win10不能複製資料夾解決方法Win10
- 遠端登入和複製檔案
- 如何同時複製、分類檔案
- 檔案複製(Go語言實現)Go
- 【cmd】IF ELSE 複製(copy)檔案問題
- oracle控制檔案複製、移動方式Oracle