您的位置:首页 > 编程语言 > Java开发

java中递归实现复制多级文件夹

2017-04-06 19:52 330 查看
直接上代码:

package copyFolderDemo;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

/*
*
* 需求:复制多级文件夹
* 数据源:
* 目的地:
*
* 分析
* 		A:封装数据源、
* 		B:封装目的地
* 		C:判断该File是文件还是文件夹
* 			a:是文件夹
* 					就在目的地下创建该文件夹
* 					获取该File对象的所有文件或者文件夹对象
* 					遍历得到每一个File对象
* 					回到C
* 			b:是文件
* 				复制文件
*
* */
public class CopyFoldersDemo {

public static void main(String[] args) throws IOException {

File srcFile=new File("h:\\movie");
File destFile=new File("h:\\copy-movie");
copyFolder(srcFile,destFile);

}

private static void copyFolder(File srcFile, File destFile) throws IOException {

if(srcFile.isDirectory()){
File newFolder=new File(destFile,srcFile.getName());
newFolder.mkdirs();
File[] fileArray=srcFile.listFiles();

for(File file:fileArray){
copyFolder(file, newFolder);
}

}else{
File newFile=new File(destFile,srcFile.getName());
copyFile(srcFile,newFile);
}

}

private static void copyFile(File srcFile, File newFile) throws IOException{
// TODO Auto-generated method stub
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream(newFile));

byte[] bys=new byte[1024];
int len=0;
while((len=bis.read(bys))!=-1){
bos.write(bys,0,len);
}
bos.close();
bis.close();

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: