文件复制管道流

/**
	 * 复制大文件,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