需求: 快速拷贝,使用 ‘缓冲字节流’, 复制某路径下的子所有子目录和文件, 到另一个路径
/**
* 复制: 某目录的所有--文件--》递归复制到:另一个地方
* @author wang
*
*/
static void cpDir(String folder,String to ) throws FileNotFoundException, IOException {
//若不存在目标目录:自动创建
File destFolder=new File(to);
if(!destFolder.exists()) {
destFolder.mkdirs();
}
//遍历: 源目录的所有文件
File f=new File(folder);
File[] fs = f.listFiles();
if(fs!=null)
for(File ff:fs) {
//判断是否文件
if(ff.isFile()) {
BufferedInputStream in = new BufferedInputStream(new FileInputStream(ff));
//输出流
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(new File(to,ff.getName())));
//复制文件内容: 创建流
byte[] bs=new byte[1024];
for(int len=0;(len=in.read(bs))!=-1;) {
out.write(bs, 0, len);
}
//关闭流
out.close();
in.close();
}else {//文件夹
File fold=new File(to,ff.getName());//获取目录名:不包含父目录,创建”新目录“
if(!fold.exists()) {//不存在,创建目录
fold.mkdir();
}
//调用递归
cp(ff.getAbsolutePath(),fold.getAbsolutePath());
}
}
}
}
//删除文件夹
private static void rmDir(String dir) {
//创建文件对象
File folder = new File(dir);
//遍历文件夹
if(folder.isFile()) {
folder.delete();
}else {
File[] fs = folder.listFiles();
System.out.println(folder.getAbsolutePath());
if(fs==null)System.err.println(folder.getAbsolutePath());
if(fs!=null)
for (File file : fs) {
//文件
if(file.isFile()) {
file.delete();
}
//目录
rmDir(file.getAbsolutePath());
}
folder.delete();
}//else
System.out.println("rm ok...");
}