去掉java中的註釋(尤其針對反編譯後的檔案)
阿新 • • 發佈:2019-01-30
package day20151217;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
public class CopyJava {
public static void main(String[] args) throws IOException {
copy("C:/test/old", "C:/test/new"); // 這裡寫好原始檔夾和目的資料夾
System.out.println("ok");
}
private static void copy(String srcPath, String descPath)
throws IOException {
copy(new File(srcPath), new File(descPath));
}
private static void copy(File srcFile, File descFile) throws IOException {
if (srcFile.isFile()) { // 檔案
File parent = descFile.getParentFile();
if (!parent.exists()) {
parent.mkdirs(); // 建立資料夾
}
if (srcFile.getName().endsWith(".java" )) {
copyJava(srcFile, descFile);
} else {
copyFile(srcFile, descFile);
}
} else { // 資料夾
for (File file : srcFile.listFiles()) {
// 相對路徑
String srcPath = file.getAbsolutePath().substring(
srcFile.getAbsolutePath().length());
copy(file, new File(descFile.getAbsolutePath() + srcPath));
}
}
}
private static void copyJava(File srcFile, File descFile)
throws IOException {
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(descFile),"utf-8"));
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(srcFile),"utf-8"));
String line;
while ((line = br.readLine()) != null) {
//把最後幾行去掉:
if(line.indexOf("/* Location: C:") != -1){
break;
}
bw.write(line.replaceFirst(".*/\\*(.*)\\*/", "")); // 注意這裡,如果不行,要適當修改
bw.write("\n");
}
br.close();
bw.close();
}
private static void copyFile(File srcFile, File descFile)
throws IOException {
OutputStream output = new FileOutputStream(descFile);
InputStream input = new FileInputStream(srcFile);
byte[] buffer = new byte[1024 * 4];
int n = 0;
while ((n = input.read(buffer)) != -1) {
output.write(buffer, 0, n);
}
input.close();
output.close();
}
}