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