从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
package com.heima.test;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Scanner;
public class Test3 {
public static void main(String[]args) throws IOException {
File src=getDir();
File dest=getDir();
if(src.equals(dest)) {
System.out.println("目标文件夹是源文件夹的子文件夹");
}else {
copy(src,dest);
}
}
private static void copy(File src, File dest) throws IOException {
File newdir=new File(dest,src.getName());//根据一个目录和一个子文件/目录得到File对象,相当于拼接路径得到一个File对象
newdir.mkdir();//在dest下创建src目录
File[] subFiles=src.listFiles();
for (File file : subFiles) {
if(file.isFile()) {
BufferedInputStream bis=new BufferedInputStream(new FileInputStream(file));
BufferedOutputStream bos=new BufferedOutputStream(
new FileOutputStream(new File(newdir,file.getName())));
int b;
while((b=bis.read())!=-1) {
bos.write(b);
}
bis.close();
bos.close();
}else {
copy(file,newdir);
}
}
}
public static File getDir() {
//键盘输入
Scanner sc=new Scanner(System.in);
System.out.println("请输出一个文件夹路径");
while(true) {
//将键盘输入的路径存储并封装成一个File对象
String line=sc.nextLine();
File dir=new File(line);
if(!dir.exists()) {
System.out.println("您输入的文件夹路径不存在,请输入一个文件夹路径");
}else if(dir.isFile()) {
System.out.println("您输入的是个文件路径,请输入一个文件夹路径");
}else {
//如果是目录将文件夹对象返回
return dir;
}
}
}
}