Java案例——复制单级\多级文件夹
作者:互联网
一、复制单级文件夹
需求:将"E:\Demo"文件夹复制到F盘下
分析:
1、创建数据源目录File,路径为"E:\Demo"
2、获取数据源目录File对象的名称也就是文件夹的名称
3、创建目的地目录File对象,路径名是要复制到的盘F:+将要复制到的文件名称(这里与原文件保持一致)
4、判断目的地目录对应的File是否存在,不存在就直接创建
5、获取数据源目录下的所有文件的File数组
6、遍历数组,得到每一个File对象,就是数据源文件
7、获取数据源文件File对象的名称
8、创建目的地文件File对象,路径名是目的地目录+名称
9、复制文件,由于文件类型不确定,采用字节流复制文件
/*
* 1、创建数据目录File,路径为"E:\\Demo"
2、获取数据源目录File对象的名称也就是文件夹的名称
3、创建目的地目录File对象,路径名是要复制到的盘F:+将要复制到的文件名称(这里与原文件保持一致)
4、判断目的地目录对应的File是否存在,不存在就直接创建
5、获取数据源目录下的所有文件的File数组
6、遍历数组,得到每一个File对象,就是数据源文件
7、获取数据源文件File对象的名称
8、创建目的地文件File对象,路径名是目的地目录+名称
9、复制文件,由于文件类型不确定,采用字节流复制文件
* */
public class Demo01 {
public static void main(String[] args) throws IOException {
//创建数据目录File,路径为"E:\\Demo"
File srcFolder = new File("E:\\Demo");
//获取数据源目录File对象的名称也就是文件夹的名称
String srcFolderName = srcFolder.getName();
//创建目的地目录File对象,路径名是要复制到的盘F:+将要复制到的文件名称(这里与原文件保持一致)
File destFolder = new File("F:", srcFolderName);
//判断目的地目录对应的File是否存在,不存在就直接创建
if (!destFolder.exists()) {
destFolder.mkdir();
} else {
System.out.println("文件名已存在,请修改目录名后再次运行");
}
//获取数据源目录下的所有文件的File数组
File[] listfiles = srcFolder.listFiles();
//遍历数组,得到每一个File对象,就是数据源文件
for (File srcfile : listfiles) {
//获取数据源文件File对象的名称
String srcfileName = srcfile.getName();
//创建目的地文件File对象,路径名是目的地目录+名称
File destfile = new File(destFolder, srcfileName);
//复制文件,由于文件类型不确定,采用字节流复制文件
//调用方法
copyFile(srcfile, destfile);
}
}
二、复制多级文件夹
需求:把"E:\Demo"复制到F盘下,Demo中含有多个文件夹,文件夹中又有多个子文件夹
分析:
1、创建数据源对象,路径是"E:\Demo"
2、创建目的地File对象,路径是F:\
3、写方法实现文件夹的复制,参数为数据源File对象和目的地File对象(用到递归)
4、判断数据源File是否是目录
是:
A:在目的地下创建和数据源File名称一样的目录
B:获取数据源File下所有的文件或者目录的File数组
C:遍历该File数组,得到每一个File对象
D:把该File作为数据源File对象,递归调用复制文件夹的方法
不是:
表明是文件,直接用字节流复制
package Demo041102;
import java.io.*;
/*
*1、创建数据源对象,路径是"E:\\Demo"
2、创建目的地File对象,路径是F:\\
3、写方法实现文件夹的复制,参数为数据源File对象和目的地File对象(用到递归)
4、判断数据源File是否是目录
是:
A:在目的地下创建和数据源File名称一样的目录
B:获取数据源File下所有的文件或者目录的File数组
C:遍历该File数组,得到每一个File对象
D:把该File作为数据源File对象,递归调用复制文件夹的方法
不是:
表明是文件,直接用字节流复制
* */
public class Demo02 {
public static void main(String[] args) throws IOException {
//创建数据源对象,路径是"E:\\Demo"
File srcFile=new File("E:\\Demo");
//创建目的地File对象,路径是F:\\
File destFile=new File("F:\\");
//写方法实现文件夹的复制,参数为数据源File对象和目的地File对象(用到递归)
copyFolder(srcFile,destFile);
}
//复制文件夹
private static void copyFolder(File srcFile, File destFile) throws IOException {
//判断数据源File是否是目录
if (srcFile.isDirectory()){
//在目的地下创建和数据源File名称一样的目录
String srcFileName = srcFile.getName();
File newFolder=new File(destFile,srcFileName);
if (!newFolder.exists()){
newFolder.mkdir();
}
//获取数据源File下所有的文件或者目录的File数组
File [] files= srcFile.listFiles();
//遍历该File数组,得到每一个File对象
for (File file:files){
//把该File作为数据源File对象,递归调用复制文件夹的方法
copyFolder(srcFile,newFolder);
}
}else{
File newFile=new File(destFile,srcFile.getName());
copyFile(srcFile,newFile);
}
}
private static void copyFile(File srcfile, File destfile) throws IOException {
//创建字节缓冲输入输出流
BufferedInputStream bips = new BufferedInputStream(new FileInputStream(srcfile));
BufferedOutputStream bops = new BufferedOutputStream(new FileOutputStream(destfile));
//读取数据
byte[] bytes = new byte[1024];
int len;
while ((len = bips.read(bytes)) != -1) {
bops.write(bytes, 0, len);
}
bips.close();
bops.close();
}
}
标签:Java,对象,数据源,文件夹,File,创建,目的地,单级 来源: https://www.cnblogs.com/CYan521/p/16131038.html