/** * 复制大文件,1G+ * @param src * @param dest */ public static void copyBigFile(File src, File dest) { FileInputStream fin = null; FileOutputStream fout = null; FileChannel in = null; FileChannel out = null; try { //缓冲区--设置了100m ByteBuffer byteBuf = ByteBuffer.allocate(1024*1024*100); fin = new FileInputStream(src); fout = new FileOutputStream(dest); in = fin.getChannel(); out = fout.getChannel(); while (true) { int eof = in.read(byteBuf); if (eof == -1) break; byteBuf.flip(); out.write(byteBuf); byteBuf.clear(); } in.close(); out.close(); fin.close(); fout.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (in!=null) { in.close(); } if (out!=null) { out.close(); } if (fin!=null) { fin.close(); } if (fout!=null) { fout.close(); } } catch (Exception e2) { // e2.printStackTrace(); } } } //管道复制,500M以上内存溢出map failed public static void copyChannel(File src,File dest){ FileInputStream fin = null; FileOutputStream fout = null; FileChannel in = null; FileChannel out = null; try { fin = new FileInputStream(src); fout = new FileOutputStream(dest); in = fin.getChannel(); out = fout.getChannel(); in.transferTo(0, in.size(), out); in.close(); out.close(); fin.close(); fout.close(); } catch (Exception e) { e.printStackTrace(); } finally { try { if (in!=null) { in.close(); } if (out!=null) { out.close(); } if (fin!=null) { fin.close(); } if (fout!=null) { fout.close(); } } catch (Exception e2) { // e2.printStackTrace(); } } } public static void copy(File src,File dest){ try { InputStream in = new FileInputStream(src); OutputStream out = new FileOutputStream(dest); int c = -1; while ((c=in.read())!=-1) { out.write(c); } in.close(); out.close(); } catch (Exception e) { // e.printStackTrace(); } }
文件复制管道流
猜你喜欢
转载自itace.iteye.com/blog/2111434
今日推荐
周排行