一个Java复制目录的方法(递归)

Posted ZhenyuGo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个Java复制目录的方法(递归)相关的知识,希望对你有一定的参考价值。

 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     }

 

以上是关于一个Java复制目录的方法(递归)的主要内容,如果未能解决你的问题,请参考以下文章

Java 8:递归复制目录?

java 如何递归遍历多重目录下的指定格式文件复制到目标目录并改格式

Java.nio:最简洁的递归目录删除

Java中递归复制文件夹及文件(简易版)

Java中递归复制文件夹及文件(简易版)

Java基础之方法的调用重载以及简单的递归