需求:将指定目录(包含内容)复制到另一个目录中(利用字节流复制文本文件)

/*
 * 需求:将指定目录(包含内容)复制到另一个目录中
 * 
 * 源目录		目标目录
 * 
 * 
 * 分析:
 * 		首先我们要获取源目录下所有的文件和子目录,
 * 				我们可以把源目录封装成一个File对象,
 * 				我们可以调用File类listFiles()方法,
 * 				我们可以获取源目录下所有的文件和子目录所对应的File对象。
 * 		如果我们获取到的是文件
 * 				先在目标目录中创建该文件所对应的目录,
 * 				进行文件的复制。
 * 		如果我们获取到的是子目录
 * 				看看子目录下面是否还有其他的文件和更深层次的子目录
 * 
 * 
 * 

 */

public class RecourrenceDemo02 {
	

	public static void main(String[] args) throws IOException {
//		复制文件夹
		File src = new File("D:\\英雄时刻");  //源目录
		File goal = new File("D:\\aaaa");   //目标目录
		copyFile(src,goal);

	}
	@SuppressWarnings("resource")
	public static void copyFile(File src,File goal) throws IOException{
		//为了严谨起见,我们首先对源目录和目标目录进行判断,看他们到底是不是目录
		if(src.isDirectory() && goal.isDirectory()) {
			//如果两个对象都是目录,需要创建新的目录
			//文件的目录为:goal+src.getName   (D:\\aaaa+英雄时刻)
			File newFile = new File(goal,src.getName());
			
			if(!newFile.exists()){   //判断文件夹是否存在
				newFile.mkdirs();   //创建目录
			}
			
			//获取源目录下所有的文件和子目录
			File[] list = src.listFiles();
			for (File file : list) {
				if(file.isFile()){
					//如果文件是文件,就进行复制文件操作
					
					FileInputStream in = new FileInputStream(file);
					//newFile+遍历出file文件的名字(D:\\aaaa\\英雄时刻+file的名字))
					FileOutputStream out = new FileOutputStream(new File(newFile,file.getName()));
					
					byte[] by=new byte[1024];
					int len;
					while((len=in.read(by))!=-1){
						out.write(by, 0, len);
					}
					in.close();
					out.close();
					
				
			}else{
				//如果File对象是子目录,递归, 这里注意传入的对象,出错会出现堆内存溢出异常
				copyFile(file,newFile);
			}
		}
	}

	}}

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值