import java. io. *;
public class IoCopy { private static int count = 0 ; private static final File START = new File ( "C:\\Users\\Administrator\\Desktop\\作业" ) ; private static final 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 ) ; } } } private 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 { load ( f) ; } } catch ( IOException e) { System. out. println ( "文件拷贝过程出现异常,程序退出" ) ; System. exit ( 1 ) ; } } } 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 ; }
}