需求:把D:\Demo这个文件夹复制到模块目录下
思路:
1、创建数据源目录File对象,路径是D:\Demo
2、获取数据源目录File对象的名称(Demo)
3、创建目的地目录File对象,路径名是模块名+Demo组成(D:\Document\Java\myCharStream\Demo)
4、判断目的地目录对应的File是否存在,如果不存在,就创建
5、获取数据源目录下所有文件的File数组
6、遍历File数组,得到每一个File对象,该File对象其实就是数据源文件
数据源文件:D:\Demo2.jpg
7、获取数据源文件File对象的名称(2.jpg)
8、创建目的地文件File对象,路径名是目的地目录+2.jpg组成(D:\Document\Java\myCharStream\Demo\2.jpg)
9、复制文件
由于文件不仅仅是文本文件,还有图片,视频等文件,所以采用字节流复制文件
package Test05;
import java.io.*;
/*
需求:把D:\Demo这个文件夹复制到模块目录下
思路:
1、创建数据源目录File对象,路径是D:\Demo
2、获取数据源目录File对象的名称(Demo)
3、创建目的地目录File对象,路径名是模块名+Demo组成(D:\Document\Java\myCharStream\Demo)
4、判断目的地目录对应的File是否存在,如果不存在,就创建
5、获取数据源目录下所有文件的File数组
6、遍历File数组,得到每一个File对象,该File对象其实就是数据源文件
数据源文件:D:\Demo2.jpg
7、获取数据源文件File对象的名称(2.jpg)
8、创建目的地文件File对象,路径名是目的地目录+2.jpg组成(D:\Document\Java\myCharStream\Demo\2.jpg)
9、复制文件
由于文件不仅仅是文本文件,还有图片,视频等文件,所以采用字节流复制文件
*/
public class CopyFolderDemo {
public static void main(String[] args) throws IOException {
//创建数据源目录File对象,路径是D:\Demo
File srcFolder = new File("D:\\Demo");
//获取数据源目录File对象的名称(Demo)
String srcFolderName = srcFolder.getName();
//创建目的地目录File对象,路径名是模块名+Demo组成(D:\Document\Java\myCharStream\Demo)
File destFolder = new File("D:\\Document\\Java\\myCharStream", srcFolderName);
//判断目的地目录对应的File是否存在,如果不存在,就创建
if (!destFolder.exists()) {
destFolder.mkdir();
}
//获取数据源目录下所有文件的File数组
File[] listFiles = srcFolder.listFiles();
//遍历File数组,得到每一个File对象,该File对象其实就是数据源文件
for (File srcFile : listFiles) {
//数据源文件:D:\Demo2.jpg
//获取数据源文件File对象的名称(2.jpg)
String srcFileName = srcFile.getName();
//创建目的地文件File对象,路径名是目的地目录+2.jpg组成(D:\Document\Java\myCharStream\Demo\2.jpg)
File destFile = new File(destFolder, srcFileName);
//复制文件
copyFile(srcFile, destFile);
}
}
private static void copyFile(File srcFile, File destFile) throws IOException {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(srcFile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(destFile));
byte[] bys = new byte[1024];
int len;
while ((len = bis.read(bys)) != -1) {
bos.write(bys, 0, len);
}
bos.close();
bis.close();
}
}