package demo8_27;
import java.io.File;
import java.io.*;
public class Test1 {
public static void main(String[] args) throws IOException {
// path1被复制文件夹地址
String path1 = "D:/JAVA/AAA";
String[] jj= path1.split("/");
System.out.println(jj[jj.length-1]);
int o= path1.lastIndexOf(jj[jj.length-1]);
// path2目标文件加地址
String path2 = "D:/JAVA/BBB/";
// 创建文件对象
File file1 = new File(path1);
Test1 test1 = new Test1();
// 创建开始时间对象
long start = System.currentTimeMillis();
// 执行复制方法
test1.kk(file1, o, path2);
// 创建结束时间对象
long end = System.currentTimeMillis();
// 输出程序运行的时间
System.out.println(end-start);
}
// 复制文件夹方法,方法名为kk
public void kk(File file1, int o, String path2) throws IOException {
// 判断被复制文件对象是否是目录
if (file1.isDirectory()) {
// 若是目录遍历该目录下的所有文件和文件夹
File[] files = file1.listFiles();
// 若该文件加为空则直接在目标地址创建文件夹
if (files.length == 0) {
String str2 = file1.getPath().substring(8);
File filec2 = new File(path2 + str2);
filec2.mkdirs();
}
// 递归遍历
for (File file : files) {
kk(file, o, path2);
}
// 若该文件夹不是目录
} else {
// 用输入流读取被复制文件,用输出流输出到目标文件
String str = file1.getPath().substring(o);
File filec = new File(path2 + str);
String str2 = file1.getParent().substring(o);
File filec2 = new File(path2 + str2);
filec2.mkdirs();
InputStream reader = new FileInputStream(file1);
OutputStream writer = new FileOutputStream(filec);
byte[] b = new byte[1024];
int len;
while ((len = reader.read(b)) != -1) {
writer.write(b, 0, len);
}
// 记得关闭输入流和输出流
reader.close();
writer.close();
}
}
}
原文:https://www.cnblogs.com/miaopasi-lianjiang/p/11420786.html