-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCopyFile2.java
185 lines (153 loc) · 5.72 KB
/
CopyFile2.java
1
2
3
4
5
6
7
8
9
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
import java.io.*;
import java.util.HashMap;
import java.util.Map;
/**
去掉ButterKnife
* 去掉BindView
*/
public class CopyFile2 {
//bw.write(new String(s.getBytes("gbk"),"utf-8")); 解决中文乱码问题。
/**
* 复制目录
* @param fromDir
* @throws IOException
*/
public static void copyDir(String fromDir) throws IOException{
//创建目录的File对象
File dirSouce = new File(fromDir);
//判断源目录是不是一个目录
if (!dirSouce.isDirectory()) {
//如果不是目录那就不复制
return;
}
//获取源目录下的File对象列表
File[]files = dirSouce.listFiles();
for (File file : files) {
//拼接新的fromDir(fromFile)和toDir(toFile)的路径
String strFrom = fromDir + File.separator + file.getName();
//判断File对象是目录还是文件
//判断是否是目录
if (file.isDirectory()) {
//递归调用复制目录的方法
copyDir(strFrom);
}
//判断是否是文件
if (file.isFile()) {
//递归调用复制文件的方法
copyFile(strFrom);
}
}
}
/**
* 复制文件
* @param fromFile
* @throws IOException
*/
public static void copyFile(String fromFile) throws IOException {
Map<String, String> map = new HashMap<>();
File file = new File(fromFile);
if (file.getName().endsWith(".java")) {
File tempFile = new File(fromFile+".txt");
if(tempFile.exists()){
tempFile.delete();
}
tempFile.createNewFile();
FileOutputStream fos=new FileOutputStream(tempFile);
OutputStreamWriter osw=new OutputStreamWriter(fos, "UTF-8");
BufferedWriter bw=new BufferedWriter(osw);
BufferedReader br = new BufferedReader(new FileReader(file));// 构造一个BufferedReader类来读取文件
String s = null;
boolean isNext = false;
String tempKey = "";
while ((s = br.readLine()) != null) {// 使用readLine方法,一次读一行
// view bindView的id
if (s.contains("@BindView")) {
String str = s.substring(s.lastIndexOf(".") + 1, s.length() - 1);
bw.write("//"+s+"\n");
tempKey = str;
isNext = true;
continue;
}
if (isNext) {
//view 本地名称
s = s.trim();
String []strs = s.split(" ");
System.out.println(strs[0]);
System.out.println(strs[1]);
System.out.println("-----"+s+"-------");
map.put(tempKey, strs[1]);
// bw.write(" ");
StringBuilder sb = new StringBuilder();
sb.append(" ");
sb.append(strs[0]);
sb.append(" ");
sb.append(strs[1]);
sb.append("\n");
bw.write(sb.toString());
isNext = false;
} else {
if (s.contains("public") && s.contains("void") && s.contains("initView()") && s.contains("{")) {
StringBuilder sb = new StringBuilder();
sb.append(s);
sb.append("\n");
for (String key : map.keySet()) {
//btn_xx = findViewById(R.id.xx)
sb.append(" ");
sb.append(map.get(key));
sb.append(" = ");
sb.append("findViewById(R.id.");
sb.append(key);
sb.append(");");
sb.append("\n");
}
// System.out.println(sb.toString());
bw.write(sb.toString());
} else if (s.contains("import") && s.contains(".R2")) {
// import com.sskj.mine.R2;
bw.write("//" + s + "\n");
} else if (s.contains("butterknife")){
// import butterknife.BindView;
bw.write("//" + s + "\n");
}else{
bw.write(s+"\n");
}
}
}
br.close();
bw.close();
osw.close();
fos.close();
file.delete();
if(tempFile.renameTo(new File(fromFile))){
System.out.println("成功");
}else{
System.out.println("失败");
}
tempFile.delete();
}else{
//不是java文件不用管
return;
}
}
// 使用示例
public static void main(String[] args) {
String rootPath ="D:\\temp";
boolean isFile = false;
if(isFile){
String resource =rootPath+"\\a.java";
try {
copyFile(resource);
} catch (IOException e) {
e.printStackTrace();
}
}else{
// String resource = rootPath+"\\dbex_android";
String resource ="D:\\work\\temp\\dbex_android";
try {
copyDir(resource);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}