Filecopy
从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹
public class Demo3_copyfile {
/**
* 从键盘接收两个文件夹路径,把其中一个文件夹中(包含内容)拷贝到另一个文件夹
* @param args
* @throws IOException
*/
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());
newdir.mkdir();
File[] subfiles=src.listFiles();
for (File subfile : subfiles) {
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();
}else{
copy(subfile,newdir);
}
}
}
public static File getDir() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入文件夹路径:");
while (true) {
String line = sc.nextLine();
File file = new File(line);
if (!file.exists()) {
System.out.println("文件夹不存在,请输入一个文件夹路径:");
} else if (file.isFile()) {
System.out.println("输入的不是文件夹,请输入一个文件夹路径:");
} else {
return file;
}
}
}
}