?
最近公司在申請專利,編寫不少文檔,項目的代碼量實在是過于龐大。如果一個一個的復制粘貼雖然能夠完成,但是對于程序員而言實在沒有這個必要。shell或者python就能解決這個問題。由于我個人對于shell和python不是非常熟練的情況下,因此我使用Java來實現這個目的。
該腳本稱不上完全自動化,頂多算是半自動化,因為需要精確到對應的包下,才能將對應的Java代碼全部輸出。不然的話,除了會將Java代碼輸出到txt文件,同時也會將一些不必要的xml和其他相關的文件一起輸出,這樣一來會顯得很混亂。因此采取這種半自動化的方案臨時解決體力勞動,提高一定的效率。
這段代碼大家可以根據自行需要去修改它。
源代碼如下:
package cn.test;import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.Writer;/*** 申請軟著代碼復制刪除注釋和空行*/ public class Test {public static void main(String[] args) throws Exception {//文件讀取路徑File dir = new File("E://實驗API//workspace//test-saas//test-common//src//main//java//com//test//sass//custome");//文件輸出路徑File target = new File("C://Users//test//Desktop//out.txt");BufferedWriter bw = new BufferedWriter(new FileWriter(target));StringBuffer sb = new StringBuffer();loopRead(dir, sb);write(sb.toString(), bw);}// 遍歷文件夾下所有文件private static void loopRead(File dir, StringBuffer sb){File[] files = dir.listFiles();if (files!=null)for(File file:files){if(file.isDirectory()){loopRead(file, sb);}else {if(file.length()!=0){sb.append(readFileToString(file));}}}}//讀取文件里面的內容private static String readFileToString(File file){BufferedReader br = null;StringBuilder sb = new StringBuilder();try {br = new BufferedReader(new FileReader(file));String line = null;while((line = br.readLine())!=null){String s = line.trim();if (s.length()==0) {continue;}if (s.startsWith("/") || s.startsWith("*")) {continue;}sb.append(line).append("\n");}} catch (Exception e) {e.printStackTrace();}finally{try {if(br!=null){br.close();}} catch (Exception e2) {e2.printStackTrace();}}return sb.toString();}//將讀取的路徑以及相應的內容寫入指定的文件private static void write(String str, Writer writer){try {writer.write(str);} catch (Exception e) {e.printStackTrace();}finally{try {if(writer!=null)writer.close();} catch (Exception e2) {e2.printStackTrace();}}} }
?