java IO流_字节流_节点流_文件夹的拷贝_练习

package IO流_字节流_节点流_文件夹的拷贝;

import java.io.File;
import java.io.IOException;

import IO流_字节流_节点流_文件的拷贝.FileUtil;

/**

  • 文件夹拷贝
  • 1.文件用IO流 ,赋值 copyFile
  • 2.文件夹 创建 mkdirs
  • 3.递归查找子孙级文件|文件夹;
  • 如 :
  •   A      文件夹            
    
  •  /  \
    
  • a.txt b
  •       |
    
  •     b.txt
    
  • 拷贝A: 先创建文件夹 AA
  •       AA
    
  •       | 
    
  •       A 整体拷贝  是文件就直接赋值;是文件夹就创建
    
  •      /  \
    
  • IO流读取a.txt b 创建
  •           |  判断是文件还是文件夹 
    
  •        b.txt  IO流读取
    

*/
public class CopyDir {

public static void main(String[] args) {
	//源目录
	String  srcPath  = "e:/xp/test/study";
	//目标目录 
	String  destPath  = "e:/xp/test/dir";
	//创建源的对象
	copyDir(srcPath,destPath);
}
//下面统一放到FileUtil里面  优化
/**
 * 拷贝文件夹
 * @param src  源路径
 * @param dest 目标路径
 */
public  static void copyDir(String srcPath,String destPath){
	File src = new File(srcPath);
	//判断
	File dest = new File(destPath); 
	copyDir(src,dest);//调用
}
/**
 * 拷贝文件夹
 * @param src  源File对象
 * @param dest 目标File对象 
 */
public  static void copyDir(File src,File dest){
	if(src.isDirectory()){//是否是文件夹
		 dest = new  File(dest,src.getName());//在目标目录构建文件夹	 
	}
	copyDirDetail(src,dest);//调用	
}
/**
 * 拷贝文件夹细节
 * @param src
 * @param dest
 */
public static void copyDirDetail(File src,File dest){//copyDirDetail复制Dir细节
	 if(src.isFile()){
		 try {
			FileUtil.copyFile(src, dest);//是文件就直接拷贝
		} catch (IOException e) {
			e.printStackTrace();
		} 
	 }else if(src.isDirectory()){
		 //确保目标文件夹存在
		 dest.mkdirs();//是文件夹或者目录就创建
		//用递归获取下一级的目录或文件
		  for(File sub:src.listFiles()){
			  //构建;自己调用自己
			  copyDirDetail(sub, new File(dest,sub.getName())); 
		  }
		}
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值