Recursive copy directories and files in the multi-level directory

Preface:
 

We often come into contact with is to copy a single file or a compressed nice large compressed file, if the multi-level file directory and file how to do?

 

Is commonly used recursive copy, copy of the judgment when the first copy of a file or directory, the directory is recursively build directory, copy the file directly.



Sample code:

[Java]  plain text view  Copy the code
?
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import java.io.*;
 
/*
*   多级目录的递归复制
* */
public class CopyFolders {
 
    public static void main(String[] args) {
 
        // 1.创建源文件所在的目录
        File src = new File("D:\\javaEE\\idea_workspase\\exam");
 
        // 2.创建要复制文件夹的目标目录
        File dest = new File("D:\\setup");
 
        // 3.进行文件目录或者文件复制
        copyFolders(src , dest);
    }
 
    private static void copyFolders(File src, File dest) {
 
        // 4.拼接要复制目标的目录
        File parent = new File(dest, src.getName());
 
        // 5.进行目录的创建
        parent.mkdirs();
 
        // 6.获取源文件目录下面所有的子目录或者文件
        File[] files = src.listFiles();
 
        // 7.进行遍历
        for (File file : files) {
 
            // 8.判断是目录还是文件
            if(file.isDirectory()){
 
                // 9.是目录 , 递归调用重新创建子目录
                copyFolders(file , parent);
 
            }else {
 
                // 10.是文件进行文件的复制
                // 11.拼接文件的目录和名称
                File dest_file = new File(parent, file.getName());
 
                // 12.进行文件的复制
                copyFile(file , dest_file);
            }
        }
    }
 
    private static void copyFile(File file, File dest_file) {
 
        try {
            // 13.创建输入流对象
            FileInputStream fis = new FileInputStream(file);
 
            // 14.创建输出流对象
            FileOutputStream fos = new FileOutputStream(dest_file);
 
            // 15.创建读取文件的数组
            byte[] bytes = new byte[1024];
 
            // 16.定义一次读取数组的长度
            int len = 0;
 
            // 17.使用循环进行读取
            while ((len = fis.read(bytes)) != -1) {
 
                fos.write(bytes , 0, len);
            }
 
            // 18.读取结束,关闭输入流和输出流
            fis.close();
            fos.close();
 
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}



summary:

copyFolders (src, dest) method is a recursive method to be executed, if the file is a directory on the build directory, if the file is copied

More learning materials may be concerned about: itheimaGZ get

Published 731 original articles · won praise 3 · Views 110,000 +

Guess you like

Origin blog.csdn.net/u010395024/article/details/104790972