java: 文件夹的递归拷贝/删除

需求: 快速拷贝,使用 ‘缓冲字节流’, 复制某路径下的子所有子目录和文件, 到另一个路径

/**
 * 复制: 某目录的所有--文件--》递归复制到:另一个地方
 * @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...");
	}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

根哥的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值