//注意我没有用try catch,只是简单的抛出异常 public class Test {
public static void main(String[] args)throws Exception {
File srcDir=new File("d:/test");
File desDir=new File("d:/new");
copyDir(srcDir,desDir);
}
//拷贝文件夹
public static void copyDir(File sorcDir,File desDir)throws Exception{
if(!sorcDir.exists()){
System.out.println("源文件夹不存在");
return;
}
//此处只能供第一次创建目标文件夹使用
if(!desDir.exists()) {
desDir = new File(desDir, sorcDir.getName());
desDir.mkdirs();
}
//判断如果源文件是文件
if(sorcDir.isFile()){
File newFile = new File(desDir,sorcDir.getName());
copyFile(sorcDir,newFile);
}else {
File f[]=sorcDir.listFiles();
for(File i:f){
if(i.isFile()){
System.out.println(i);
File newFile = new File(desDir,i.getName());
copyFile(i,newFile);
}else{
File newDir =new File(desDir,i.getName());
// 注意这一句,必须要在这创建,
newDir.mkdirs();
copyDir(i,newDir);
}
}
}
}
//copy文件
public static void copyFile(File srcFile,File desFile)throws Exception{
if(!srcFile.exists())
{
System.out.println("源文件不存在");
return;
}
if(!desFile.exists())
desFile.createNewFile();
byte b[]=new byte[1024];
int len=-1;
InputStream in=new FileInputStream(srcFile);
OutputStream out=new FileOutputStream(desFile);
while ((len=in.read(b))!=-1){
out.write(b,0,len);
}
in.close();
out.close();
}
}