java复制多级文件夹_IO流(10)复制多级文件夹

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:\JavaSE\day21\code\demos

* 目的地:E:\\

*

* 分析:

* A:封装数据源File

* B:封装目的地File

* C:判断该File是文件夹还是文件

* a:是文件夹

* 就在目的地目录下创建该文件夹

* 获取该File对象下的所有文件或者文件夹File对象

* 遍历得到每一个File对象

* 回到C

* b:是文件

* 就复制(字节流)

*/

public class CopyFoldersDemo {

public static void main(String[] args) throws IOException {

// 封装数据源File

File srcFile = new File("E:\\JavaSE\\day21\\code\\demos");

// 封装目的地File

File destFile = new File("E:\\");

// 复制文件夹的功能

copyFolder(srcFile, destFile);

}

private static void copyFolder(File srcFile, File destFile) throws IOException {

// 判断该File是文件夹还是文件

if (srcFile.isDirectory()) {

// 文件夹

File newFolder = new File(destFile, srcFile.getName());

newFolder.mkdir();

// 获取该File对象下的所有文件或者文件夹File对象

File[] fileArray = srcFile.listFiles();

for (File file : fileArray) {

copyFolder(file, newFolder);

}

} else {

// 文件

File newFile = new File(destFile, srcFile.getName());

copyFile(srcFile, newFile);

}

}

private static void copyFile(File srcFile, File newFile) throws IOException {

BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));

BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(newFile));

byte[] bys = new byte[1024];

int len = 0;

while ((len = bis.read(bys)) != -1) {

bos.write(bys, 0, len);

}

bos.close();

bis.close();

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值