1 package edu.jiangxin.apktoolbox.file.core;
2
3 import java.io.BufferedInputStream;
4 import java.io.BufferedOutputStream;
5 import java.io.File;
6 import java.io.FileInputStream;
7 import java.io.FileOutputStream;
8 import java.io.IOException;
9
10 import org.apache.logging.log4j.LogManager;
11 import org.apache.logging.log4j.Logger;
12
13
14
15
16
17
18
19 public class FileProcess {
20
21 private static final Logger logger = LogManager.getLogger(FileProcess.class.getSimpleName());
22
23
24
25 final static int BUFFERSIZE = 1024 * 5;
26
27
28
29
30
31
32
33 public static void copyFile(String srcFileString, String desFileString) {
34 File srcFileFile = new File(srcFileString);
35 File desFileFile = new File(desFileString);
36
37 try (BufferedInputStream in = new BufferedInputStream(new FileInputStream(srcFileFile));
38 BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(desFileFile))) {
39
40
41 byte[] buffer = new byte[BUFFERSIZE];
42 int len;
43 while ((len = in.read(buffer)) != -1) {
44 out.write(buffer, 0, len);
45 }
46 out.flush();
47 } catch (IOException e) {
48 logger.error("copy file exception", e);
49 }
50 logger.info("Success to copy {} to {}", srcFileString, desFileString);
51 }
52
53
54
55
56
57
58
59
60 public static void copyDirectory(String srcDirString, String desDirString) {
61 File srcDirFile = new File(srcDirString);
62 File desDirFile = new File(desDirString);
63 if (!desDirFile.exists()) {
64 boolean ret = desDirFile.mkdirs();
65 if (!ret) {
66 logger.error("mkidrs failed: " + desDirFile);
67 return;
68 }
69 }
70
71 File[] files = srcDirFile.listFiles();
72 if (files == null) {
73 return;
74 }
75 for (int i = 0; i < files.length; i++) {
76 if (files[i].isFile()) {
77 String srcFileTemp = files[i].getAbsolutePath();
78 String desFileTemp = desDirFile.getAbsolutePath() + File.separator + files[i].getName();
79 copyFile(srcFileTemp, desFileTemp);
80 }
81 if (files[i].isDirectory()) {
82 String srcDirTemp = files[i].getAbsolutePath();
83 String desDirTemp = desDirFile.getAbsolutePath() + File.separator + files[i].getName();
84 copyDirectory(srcDirTemp, desDirTemp);
85 }
86 }
87 System.out.println("Success to copy " + srcDirString + " to " + desDirString);
88 }
89
90
91
92
93
94
95
96
97
98 public static void moveFile(String srcFileString, String desFileString, boolean isOverride) {
99 File srcFileFile = new File(srcFileString);
100 File desFileFile = new File(desFileString);
101 if (isOverride) {
102 if (desFileFile.delete()) {
103 System.out.println("Success to delete desFile");
104 }
105 } else {
106 return;
107 }
108 copyFile(srcFileString, desFileString);
109 if (srcFileFile.delete()) {
110 System.out.println("Success to delete srcFile");
111 }
112
113 }
114
115
116
117
118
119
120
121 public static boolean deleteDir(String dir) {
122 File dirFile = new File(dir);
123 if (dirFile.isDirectory()) {
124 String[] files = dirFile.list();
125 if (files != null) {
126 for (int i = 0; i < files.length; i++) {
127 String temp = dirFile.getAbsolutePath() + File.separator.toString() + files[i];
128 boolean success = deleteDir(temp);
129 if (!success) {
130 System.out.println("Something error!");
131 return false;
132 }
133 }
134 }
135 }
136 boolean ret = dirFile.delete();
137 if (ret) {
138 System.out.println("Success to delete " + dir);
139 } else {
140 System.out.println("Something error!");
141 }
142 return ret;
143 }
144
145
146
147
148
149
150
151 public static boolean deleteDirs(String[] dirs) {
152 for (int i = 0; i < dirs.length; i++) {
153 boolean isSuccessful = deleteDir(dirs[i]);
154 if (isSuccessful == true) {
155 System.out.println("成功删除目录:" + dirs[i]);
156 }
157 }
158 return false;
159 }
160 }