File类递归练习(拷贝)
需求:3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
public class demo2 {
public static void main(String[] args) throws FileNotFoundException, IOException{
File srcFile = demo1.getDir();
File dstFile = demo1.getDir();
if(srcFile.equals(dstFile)){
System.out.println("目标文件夹是源文件夹的子文件夹");
}
else{
copyFile(srcFile, dstFile);
}
}
public static File getDir(){
System.out.println("请输入一个文件夹:");
while(true){
Scanner sc = new Scanner(System.in);
File file = new File(sc.nextLine());
if(file.exists()){
if(file.isFile()){
continue;
}
else if(file.isDirectory()){
return file;
}
}
}
}
public static void copyFile(File src, File dst) throws FileNotFoundException, IOException{
File newDir = new File(dst, src.getName());
newDir.mkdir();
File[] subFiles = src.listFiles();
for(File subFile:subFiles){
if(subFile.isDirectory()){
copyFile(subFile, newDir);
}
else{
try(
FileInputStream fis = new FileInputStream(subFile.getPath());
FileOutputStream fos = new FileOutputStream(new File(newDir , subFile.getName()));
){
int len;
byte[] arr = new byte[8192];
while((len = fis.read(arr)) != -1){
fos.write(arr, 0, len);
}
}
}
}
}
}