import java.io.*;
public class IoCopy2 {private static int count = 0;private static final File START = new File("C:\\Users\\Administrator\\Desktop\\作业");private static File END = new File("C:\\Users\\Administrator\\Desktop\\111");public static void main(String[] args) throws IOException {ifFile();load(START);System.out.println("-----程序结束,拷贝 " + count + " 条数据-----");}private static void ifFile() {if (!START.exists() || !START.isDirectory()) {System.out.println("起始地路径 不存在,或不为文件夹");System.exit(1);}if (!END.exists() || !END.isDirectory()) {boolean mkdirs = END.mkdirs();if (!mkdirs) {System.out.println("目的地路径不存在,或存在相同名的文件,文件夹自动创建失败");System.out.println("解决办法:检测路径是否正确,删除该路径同名的文件");System.exit(1);}}}public static void load(File start) {File[] files = start.listFiles();if (files == null) {return;}for (File f : files) {try {if (f.isFile()) {if (!isEedFile(f)) {BufferedInputStream input = new BufferedInputStream(new FileInputStream(f));BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(END + "\\" + f.getName()));System.out.println("正在复制第" + (++count) + "条数据:" + f.getName());byte[] arr = new byte[1024];int len;while ((len = input.read(arr)) != -1) {out.write(arr, 0, len);}input.close();out.close();continue;}System.out.println(f.getName() + "重复 已跳过");} else {END = new File(END, f.getName());if (END.isFile()) {boolean delete = END.delete();}if (!END.isDirectory()) {boolean mkdirs = END.mkdirs();}load(f);}} catch (IOException e) {System.out.println("文件拷贝过程出现异常,程序退出");System.exit(1);}}END = new File(END.getParent());}private static boolean isEedFile(File f) {File[] files = END.listFiles();if (files != null) {for (File file : files) {if (file.isFile()) {if (f.getName().equals(file.getName())) {return f.length() == file.length();}}}}return false;}
}