复制文件的异常处理

示例代码
package com.io.liushuaishuai;
import java.io.*;
public class copyFolderDemo01 {
public static void main(String[] args) throws IOException {
//创建数据源File对象,路径是c:\\java
File srcfile = new File("c:\\java");
//创建目的地File对象,路径是c:\\F
File destfile = new File("c:\\F");
//文件夹复制
copyFolder(srcfile, destfile);
}
private static void copyFolder(File srcfile, File destfile) throws IOException {
if (srcfile.isDirectory()) {
String srcfileName = srcfile.getName();
File newFolder = new File(destfile, srcfileName);
if (!newFolder.exists()) {
newFolder.mkdir();
}
File[] filearray = srcfile.listFiles();
for (File file : filearray) {
copyFolder(file, destfile);
}
} else {
copyFile(srcfile, new File(destfile, srcfile.getName()));
}
}
// jdk7以后的改进方案
private static void copyFile(File srcfile, File destfile) {
try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destfile));) {
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
}
}
//try....catch finally
/*
private static void copyFile(File srcfile, File destfile) {
BufferedInputStream bis = null;
BufferedOutputStream bos = null;
try {
bis = new BufferedInputStream(new FileInputStream(srcfile));
bos = new BufferedOutputStream(new FileOutputStream(destfile));
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
bos.flush();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if(bis!=null) {
try {
bis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(bos!=null) {
try {
bos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
*/
/*
private static void copyFile(File srcfile, File destfile) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcfile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destfile));
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
bos.flush();
}
bis.close();
bos.close();
}*/
}

浙公网安备 33010602011771号