使用Java缓冲区字节流复制文件夹

package cn.IO.test;

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

/*
 * 需求:将文件夹下的所有内容复制到指定文件夹(所有文件或文件夹复制到指定文件夹)
 * 
 * 数据源:e:\\javademo
 * 目的地:e:\\javademocopy
 * 
 */

public class CopyTest {

	public static void main(String[] args) throws IOException {
		// 创建封装数据源对象
		File srcFolder = new File("e:\\javademo");
		// 创建封装目的地对象
		File destFolder = new File("e:\\javademocopy");
		// 先判断目的地是否存在,不存在就创建
		if (!destFolder.exists()) {
			destFolder.mkdirs();
		}

		copytools(srcFolder, destFolder);

	}

	// 对文件夹下的文件和文件夹分别进行处理
	private static void copytools(File srcFolder, File destFolder) throws IOException {
		// 将数据源中保存到数组
		File[] file = srcFolder.listFiles();
		// 文件对象遍历
		for (File f : file) {
			// 判断文件对象是否是文件夹
			if (f.isDirectory()) {
				// 是文件夹,先创建新的目的地文件对象,再在目的地创建同名文件夹
				File newFolder = new File(destFolder, f.getName());
				newFolder.mkdir();
				// 递归对文件夹下的文件夹...进行处理
				copytools(f, newFolder);
			} else {
				File newfile = new File(destFolder, f.getName());
				// 调用缓冲区字节流方法进行文件复制
				copyfile(f, newfile);
			}
		}
	}

	// 使用缓冲区字节流复制文件
	private static void copyfile(File f, File newfile) throws IOException {
		// 创建字节缓冲区输入流对象
		BufferedInputStream bis = new BufferedInputStream(new FileInputStream(f));
		// 创建字节缓冲区输出流对象
		BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newfile));

		// 创建字节数组用于存储读取数据
		byte[] b = new byte[1024];
		// 创建变量,用于判断是否读取完成及保证写入数据长度,防止写入长度超出实际长度(由于读取数据的末尾,可能末尾数据不足以覆盖上一次数组中保存的数据)
		int len;
		// 循环将复制的数据写入文件
		while ((len = bis.read(b)) != -1) {
			bos.write(b, 0, len);
		}
		// 关闭流对象,释放资源
		bis.close();
		bos.close();

	}

}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值