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.io.InputStream;
import java.util.Scanner;
public class Test1 {
/*
* 需求:3,从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
*
* 分析
* 从键盘接收两个文件夹路径
* 1,创建键盘录入对象
* 2,定义一个无限循环
* 3,将键盘录入的对象存储,并封装成File对象
* 4,对file对象进行判断
* 5,将文件夹路径返回
*
* 把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
* 1,在目标文件夹中创建原文件夹
* 2,获取该原文件夹中的所有文件夹和文件listFile
* 3,遍历数组
* 4,如果是文件就用Io流读写
* 5,如果是文件夹就递归调用
*/
public static void main(String[] args) throws Exception {
File src = getDir();
File dest = getDir();
copy(src,dest);
}
/* 从键盘接收两个文件夹路径
* 1,返回值类型File
* 2,参数列表无
*/
public static File getDir() {
//1,创建键盘录入对象
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个文件夹路径:");
//2,定义一个无限循环
while(true) {
//3,将键盘录入的对象存储,并封装成File对象
String line = sc.nextLine();
File dir = new File(line);
//4,对file对象进行判断
if(!dir.exists()) {
System.out.println("您输入的文件夹路径不存在,请从新录入一个文件夹路径:");
}else if(dir.isFile()) {
System.out.println("您录入的是文件,请从新录入一个文件夹路径:");
}else {
return dir;
}
}
}
/*
* 把其中一个文件夹中(包含内容)拷贝到另一个文件夹中
* 1,返回值类型void
* 2,参数列表File src, File dest
*/
public static void copy(File src, File dest) throws IOException {
//1,在目标文件夹中创建原文件夹
File newDir = new File( dest, src.getName());
newDir.mkdir();
//2,获取该原文件夹中的所有文件夹和文件listFile
File[] subFiles = src.listFiles();
//3,遍历数组
for (File subfile : subFiles) {
//4,如果是文件就用Io流读写
if(subfile.isFile()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(subfile));
BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File(newDir,subfile.getName())));
int b;
while((b = bis.read()) != -1) {
bos.write(b);
}
bis.close();
bos.close();
// 5,如果是文件夹就递归调用
} else {
copy(subfile,newDir);
}
}
}
}
|
|