文件夹的复制--Java中IO流实现

Java中IO流对文件夹进行复制

文件的复制就是IO流中的读写过程,其实文件夹的复制也是读写的过程,但是在读写的时候我们要加以判断,如果是一个文件夹的话就遍历其中的文件,是一个重复的迭代过程

思路分析:

在这里插入图片描述
图片可能理解起来不是特别的清晰,看一下代码吧

import java.io.*;
public class Text_文件夹的复制 {
	public static void main(String[] args) throws Exception {
		System.out.println("开始复制文件夹");
		//首先建立输入输出的File对象
		File f = new File("D:\\www\\");
		File f2 = new File("D:\\ww");
		copyDir(f,f2);  //调用复制文件夹的方法
		System.out.println("文件夹复制成功!");
		
	}
	
	public static void copyDir(File srcDir,File desDir) throws Exception{
		//判断文件夹是否存在,避免出现空指针异常
		if(srcDir != null && srcDir.length() > 0) {
			//创建目的文件夹,一旦进入这一步就表明源文件夹没有问题,所以要创建目的文件夹来进行复制
			desDir.mkdirs();
			//提取文件夹一级对象
			File[] file = srcDir.listFiles();
			//遍历文件夹
			for(File fi : file) {
				//判断是否为文件
				if(fi.isFile()) {  //如果是一个文件则直接进行复制
				/*
                简单说一下这里的逻辑:
                是一个文件夹就可以直接复制,那么复制的文件源就是此时遍历的得到的File,目的文件就是此时当前文件夹+File.getName();
                直接调用文件复制的方法
               */
					copyFile(fi,new File(desDir,fi.getName())); //可以查看一下File类的构造方法
				}
				else {
				//如果不是文件,肯定是一个目录。使用迭代
				/*
              遍历逻辑:迭代!
*/
				copyDir(fi,new File(desDir,fi.getName()));
				}
			}			
		}		
	}
	
	//定义一个复制文件的方法
	
	public static void copyFile(File srcFile , File  desFile) throws Exception {
		//使用字节缓冲流进行文件复制
		try(
		BufferedInputStream buff1 = new BufferedInputStream(new FileInputStream(srcFile));
		BufferedOutputStream buff2 = new BufferedOutputStream(new FileOutputStream(desFile));
				
		){
			byte[] bytes = new byte[1024];
			int len;
			while((len = buff1.read(bytes)) != -1) {
				buff2.write(bytes, 0, len);
			}
			
		}catch(Exception e) {
			System.out.println("复制文件出现错误!");
		}
	}

}

其中逻辑就主要在于出现目录时,进行的迭代过程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值