利用IO流中的字节输入输出流 完成拷贝文件夹
package com.decorator;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
public class CopyDirDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
CopyDirUtil.copyDir(new File("E:\\ff"), new File("F:\\cc"));
System.out.println("success!");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class CopyDirUtil{
public static void copyDir(File src,File dst) throws IOException{
//这里传入的两个参数 一个是源文件夹,一个是目标文件夹
dst.mkdirs();//这个方法如果要创建E:\\aa\\bb 若没有aa文件夹 会自动创建aa 再创建bb
//dst.mkdir();这个方法如果要创建E:\\aa\\bb 若没有aa文件夹 会报错
if(src!=null){//如果源文件存在
File[] files = src.listFiles();//遍历源文件夹中的文件或目录
if(files!=null){//files不为空,这里的意思就是如果源文件夹不为空
for(File f:files){//遍历文件夹中的内容
//如果f是文件,复制文件 用字节流来复制
if(f.isFile()){
FileInputStream fiStream=new FileInputStream(f);//读f
FileOutputStream foStream=new FileOutputStream(
dst.getAbsolutePath()+"\\"+f.getName());//拷贝到目标文件夹
byte[] buff=new byte[1024*1024];//自定义一个字节缓冲区
int len=0;//保存的读到的字节的个数
while((len=fiStream.read(buff))!=-1){
foStream.write(buff,0,len);
}
fiStream.close();//关闭读资源
foStream.close();//关闭写资源
}else{//如果f不是文件 则递归
copyDir(f,new File(dst.getAbsolutePath()+"\\"+f.getName()));;
}
}
}
}
}
}