packagewjd.copy;importjava.io.BufferedInputStream;importjava.io.BufferedOutputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;public classCopyFile {public static void main(String[] args) throwsIOException {//需要被复制文件夹的位置
String url1 = "c:" + File.separator + "source";//最后被复制的文件夹
String url2 = "d:" + File.separator + "copy";//将这2个文件夹包装成File对象
File file1 = newFile(url1);
File file2= newFile(url2);//创建目标文件夹
file2.mkdirs();//对源文件夹进行遍历
File[] files =file1.listFiles();for (int a = 0; a < files.length; a++) {//是标准文件,我们就直接进行复制动作
if(files[a].isFile()) {//确认目标文件的需要被复制到的位置,它肯定是在目标文件夹下面
File target = newFile(file2, files[a].getName());
copyFile(files[a], target);
}if(files[a].isDirectory()){//文件夹下面还是个文件夹,这个时候去拿到文件夹的路径
String source1 = url1+File.separator+files[a].getName();
String target1= url2+File.separator+files[a].getName();
copyDir(source1,target1);
}
}
}private static void copyDir(String source1, String target1) throwsIOException {
File source= newFile(source1);
File target= newFile(target1);
target.mkdirs();
File[] files=source.listFiles();for(int a=0;a
File target2= newFile(target,files[a].getName());
copyFile(files[a], target2);
}if(files[a].isDirectory()){
String source3= source1 +File.separator +files[a].getName();
String target3= target1 +File.separator +files[a].getName();//递归,对还是文件夹的文件夹在调用copyDir的方法,上面的if条件是递归的出口
copyDir(source3,target3);
}
}
}private static voidcopyFile(File file, File target)throwsIOException {
BufferedInputStream bis= newBufferedInputStream(newFileInputStream(file));
BufferedOutputStream bos= newBufferedOutputStream(newFileOutputStream(target));byte[] buf = new byte[1024];int len = 0;while((len=bis.read(buf))!= -1){
bos.write(buf,0,len);
}
bis.close();
bos.close();
}
}