package javaio.recursion.Reader;
import java.io.*;
import java.util.*;
public class Copyfile {
public static void main(String[] args) throws IOException {
Scanner s=new Scanner(System.in);
System.out.println("输入你想要复制的文件或文件夹");
String str1=s.next();
System.out.println("输入你想要粘贴在哪的文件或文件夹");
String str2=s.next();
File f1=new File(str1);
File f2=new File(str2);
if(f1.exists())
copy(f1,f2);
else
System.out.println("想要复制的文件不存在");
}
public static void copy(File fs,File ft) throws IOException {
if(fs.isFile()&&ft.isFile()){
if(fs.getName().equals(ft.getName()))
ft=new File(ft,ft.getName()+"-副本");
copyfile(fs,ft);
}
if(fs.isDirectory()&&ft.isDirectory()) {
File[] f=fs.listFiles();
File tmp=ft;
ft=new File(ft,fs.getName());
if(!ft.mkdirs()) {
ft=new File(tmp,fs.getName()+"-副本");
ft.mkdirs();
}
for(File x:f) {
File c=new File(ft,x.getName());
System.out.println("复制"+c.getName());
if(x.isDirectory()){
c.mkdirs();
copy(x,c);
}else{
c.createNewFile();
copyfile(x,c);
}
}
}
if(fs.isFile()&&ft.isDirectory()) {
File tmp=ft;
ft=new File(ft,fs.getName());
if(!ft.createNewFile()) {
ft=new File(tmp,fs.getName()+"-副本");
ft.createNewFile();
}
copyfile(fs,ft);
}
if(fs.isDirectory()&&fs.isFile()){
System.out.println("无法将目录复制到文件中/(ㄒoㄒ)/~~");
return;
}
}
public static void copyfile(File fs,File ft) throws IOException {
FileInputStream fi=new FileInputStream(fs);
FileOutputStream fo=new FileOutputStream(ft);
BufferedInputStream bfi = null;
BufferedOutputStream bfo =null;
bfi=new BufferedInputStream(fi);
bfo=new BufferedOutputStream(fo);
int count=-1;
while((count=bfi.read())!=-1) {
bfo.write(count);
}
bfo.flush();
bfo.close();
bfi.close();
}
}