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