package cn.it.text;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.Scanner;
/*
* 1.从键盘接收两个文件夹路径,把其中一个文件夹(包含内容)
* 拷贝到另一个文件夹中
*/
public class Test1 {
public static void main(String[] args) throws Exception {
Scanner scan = new Scanner(System.in);
String pathname1 = "";
String pathname2 = "";
while (true) {
// 获取文件夹路径
System.out.println("请输入文件夹路径1:");
pathname1 = scan.nextLine();
System.out.println("请输入文件夹路径2:");
pathname2 = scan.nextLine();
// 创建两个文件对象
File file1 = new File(pathname1);
File file2 = new File(pathname2);
// 判断文件是否存在
if (!(file1.exists() && file2.exists())) {
System.out.println("你输入的文件夹路径错误!");
// 跳出本层循环,重新输入
continue;
}
// 判断是否是文件夹
if (!(file1.isDirectory() && file2.isDirectory())) {
System.out.println("你输入的不是文件夹路径!");
continue;
}
// 创建输入输出流对象
fuzhi(file1, file2);
break;
}
}
public static void fuzhi(File file1, File file2) throws Exception {
//在目标文件中创建原文件夹
//File类的构造方法File(File file,String name)
File newFile=new File(file2,file1.getName());
//创建文件夹,文件夹的路径在构造方法中给出,如果存在文件夹,就不再创建
//如果不存在,就创建文件夹
newFile.mkdir();
//获取源文件夹中的文件目录
File[] fileArr=file1.listFiles();
//遍历数组
for(File f:fileArr) {
//如果是文件夹,就递归调用
if (f.isDirectory()) {
fuzhi(f, newFile);
}else {
//如果是文件,就使用IO流
BufferedInputStream in=new BufferedInputStream(new FileInputStream(f));
BufferedOutputStream out=new BufferedOutputStream(new FileOutputStream(new File(newFile,f.getName())));
int b;
while((b=in.read())!=-1) {
out.write(b);
}
in.close();
out.close();
}
}
}
}