1 /** 2 * 将目标目录复制为指定目录(也可以用于复制文件) 3 * @param src 源路径 4 * @param dest 目标路径 5 * @throws IOException 6 */ 7 public static void copyDir(File src, File dest) throws IOException { 8 if(!src.exists()) { // 检查源路径是否存在 9 System.out.println("源目录不存在!"); 10 } else if(src.isFile()) { // 如果源路径是一个文件 11 if(dest.isDirectory()) { 12 // 不能将文件复制为一个目录 13 System.out.println("目标路径不是一个文件!"); 14 }else { 15 // 复制文件 16 FileInputStream fis = new FileInputStream(src); 17 FileOutputStream fos = new FileOutputStream(dest); 18 byte[] arr = new byte[1024 * 8]; 19 int len; 20 while((len = fis.read(arr)) != -1) { 21 fos.write(arr, 0, len); 22 } 23 fis.close(); 24 fos.close(); 25 } 26 } else { // 如果源路径是一个目录 27 if(dest.isFile()) { 28 // 不能将目录复制为一个文件 29 System.out.println("目标路径不是一个目录!"); 30 } else { 31 // 先检查目标是否存在, 不存在则创建 32 if(!dest.exists()) { 33 dest.mkdirs(); 34 } 35 // 如果目标路径是一个目录, 递归调用本方法进行复制 36 // 获取源目录的子文件/目录 37 String[] subFiles = src.list(); 38 // 遍历源目录进行复制 39 for (String subFile : subFiles) { 40 copyDir(new File(src, subFile), new File(dest, subFile)); 41 } 42 } 43 } 44 } 45 46 /** 47 * 测试代码 48 * @param args 49 * @throws IOException 50 */ 51 public static void main(String[] args) throws IOException { 52 Scanner sc = new Scanner(System.in); 53 System.out.println("请输入源路径:"); 54 String src = sc.nextLine(); 55 System.out.println("请输入目标路径:"); 56 String dest = sc.nextLine(); 57 copyDir(new File(src), new File(dest)); 58 }