把“/Users/chenys/Desktop/itcast”这个文件夹复制到[/Users/chenys/Desktop/test1/]目录下* 把“/Users/chenys/Desktop/itcast”这个文件夹复制到[/Users/chenys/Desktop/test1/]目录下 * 分析: * 1. 创建数据源目录File对象,路径是 /Users/chenys/Desktop/itcast * 2.获取数据源目录File对象的名称 * 3.创建目的地目录File对象,路径由([/Users/chenys/Desktop/test1/]+第2步获取的名称)组成 * 4.判断第3步创建的File是否存在,如果不存在,就创建 * 5.获取数据源目录下所有文件的File数组 * 6.遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件 * 7.获取数据源文件File对象的名称 * 8.创建目的地文件File对象,路径由(目的地目录+第7步获取的名称)组成 * 9.复制文件 * 由于不清楚数据源目录下的文件都是什么类型的,所以采用字节流复制文件 * 采用参数为File的构造方法
package IO流案例;
import java.io.*;
/**
* @ClassName copyFolderDemo
* @Description 单级文件夹的复制
* 把“/Users/chenys/Desktop/itcast”这个文件夹复制到[/Users/chenys/Desktop/test1/]目录下
* 分析:
* 1. 创建数据源目录File对象,路径是 /Users/chenys/Desktop/itcast
* 2.获取数据源目录File对象的名称
* 3.创建目的地目录File对象,路径由([/Users/chenys/Desktop/test1/]+第2步获取的名称)组成[/Users/chenys/Desktop/test1/]
* 4.判断第3步创建的File是否存在,如果不存在,就创建
* 5.获取数据源目录下所有文件的File数组
* 6.遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
* 7.获取数据源文件File对象的名称
* 8.创建目的地文件File对象,路径由(目的地目录+第7步获取的名称)组成
* 9.复制文件
* 由于不清楚数据源目录下的文件都是什么类型的,所以采用字节流复制文件
* 采用参数为File的构造方法
* @Author chenxys
* @Date 2022/2/21 13:08
* @Version
*/
public class copyFolderDemo {
public static void main(String[] args) throws IOException {
//1. 创建数据源目录File对象,路径是 /Users/chenys/Desktop/itcast
File srcFolder = new File("/Users/chenys/Desktop/itcast");
//2.获取数据源目录File对象的名称 即itcast
String srcFolderName = srcFolder.getName();
//3.创建目的地目录File对象,路径由([/Users/chenys/Desktop/test1/]+第2步获取的名称)组成
File destFolder = new File("/Users/chenys/Desktop/test1/",srcFolderName);
//4.判断第3步创建的File是否存在,如果不存在,就创建
if (!destFolder.exists()) {
destFolder.mkdir();
}
//5.获取数据源目录下所有文件的File数组
File[] fileList = srcFolder.listFiles();
//6.遍历File数组,得到每一个File对象,该File对象,其实就是数据源文件
for (File srcFile:
fileList) {
//7.获取数据源文件File对象的名称
String srcFileName = srcFile.getName();
//8.创建目的地文件File对象,路径由(目的地目录+第7步获取的名称)组成
File dsetFile = new File(destFolder,srcFileName);
//9.复制文件
copyFile(srcFile,dsetFile);
}
}
private static void copyFile(File srcFile, File dsetFile) throws IOException {//复制文件的方法
//创建缓冲字节输入流
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
//创建缓冲字节输出流
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(dsetFile));
//声明字节数组
byte[] buff = new byte[1024];
int len;
//循环遍历写入文件
while ((len=bis.read(buff))!=-1){
bos.write(buff,0,len);//写入数据
}
//关闭资源
bis.close();
bos.close();
}
}
结果: