java批量清除文件注释

package cn.creditharmony;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
 
/**
 * title: 清除注释
 * @author lzj
 */
public class ClearComment {  
 
    /** 根目录 */
    public static String rootDir = "E:\\workspace\\TDCA\\src\\main\\java\\com\\fh";  

    public static void main(String args[]) throws FileNotFoundException,  
           UnsupportedEncodingException {  
 
       deepDir(rootDir);  
 
   }  
 
   public static void deepDir(String rootDir) throws FileNotFoundException,  
           UnsupportedEncodingException {  
       File folder = new File(rootDir);  
       if (folder.isDirectory()) {  
           String[] files = folder.list();  
           for (int i = 0; i < files.length; i++) {  
               File file = new File(folder, files[i]);  
               if (file.isDirectory() && file.isHidden() == false) {  
                   System.out.println(file.getPath());  
                   deepDir(file.getPath());  
               } else if (file.isFile()) {  
                   clearComment(file.getPath());  
               }  
           }  
       } else if (folder.isFile()) {  
           clearComment(folder.getPath());  
       }  
   }  
 
   /**
    * @param currentDir
    *            当前目录
    * @param currentFileName
    *            当前文件名
    * @throws FileNotFoundException
    * @throws UnsupportedEncodingException
    */
   /**
    * @param filePathAndName
    * @throws FileNotFoundException
    * @throws UnsupportedEncodingException
    */
   public static void clearComment(String filePathAndName)  
           throws FileNotFoundException, UnsupportedEncodingException {  
       StringBuffer buffer = new StringBuffer();  
       String line = null; // 用来保存每行读取的内容  
       InputStream is = new FileInputStream(filePathAndName);  
       BufferedReader reader = new BufferedReader(new InputStreamReader(is,  
               "UTF-8"));  
       try {  
           line = reader.readLine();  
       } catch (IOException e) {  
           // TODO Auto-generated catch block  
           e.printStackTrace();  
       } // 读取第一行  
       while (line != null) { // 如果 line 为空说明读完了  
           buffer.append(line); // 将读到的内容添加到 buffer 中  
           buffer.append("\r\n"); // 添加换行符  
           try {  
               line = reader.readLine();  
           } catch (IOException e) {  
               e.printStackTrace();  
           } // 读取下一行  
       }  
       // 1、清除单行的注释,如: //某某,正则为 :\/\/.*  
       // 2、清除单行的注释,如:/** 某某 */,正则为:\/\*\*.*\*\/  
       // 3、清除单行的注释,如:/* 某某 */,正则为:\/\*.*\*\/  
       // 4、清除多行的注释,如:  
       // /* 某某1  
       // 某某2  
       // */  
       // 正则为:.*/\*(.*)\*/.*  
       // 5、清除多行的注释,如:  
       // /** 某某1  
       // 某某2  
        // */  
        // 正则为:/\*\*(\s*\*\s*.*\s*?)*  
        String filecontent = buffer.toString();  
 
        Map<String, String> patterns = new HashMap<String, String>();  
//        patterns.put("([^:])\\/\\/.*", "$1");// 匹配在非冒号后面的注释,此时就不到再遇到http://  
//        patterns.put("\\s+\\/\\/.*", "");// 匹配“//”前是空白符的注释  
//        patterns.put("^\\/\\/.*", "");  
//        patterns.put("^\\/\\*\\*.*\\*\\/$", "");  
//        patterns.put("\\/\\*.*\\*\\/", "");  
//        patterns.put("\\* 联系方式:qq313596790", "");  创建人:FH
//         patterns.put("@author FH", "创建人:SomeOne");  
         patterns.put("创建时间:2015", "创建时间:2016");
//        patterns.put("/\\*(\\s*\\*\\s*.*\\s*?)*\\*\\/", "");
        //patterns.put("/\\*(\\s*\\*?\\s*.*\\s*?)*", "");  
        Iterator<String> keys = patterns.keySet().iterator();  
        String key = null, value = "";  
        
        String temp = filecontent;
        while (keys.hasNext()) {  
            // 经过多次替换  
            key = keys.next();  
            value = patterns.get(key);  
            temp = replaceAll(temp, key, value);  
        }  
        System.out.println(filecontent);  
        if (!filecontent.equals(temp)) {
            // 再输出到原文件  
            try {  
                File f = new File(filePathAndName);  
                if (!f.getParentFile().exists()) {  
                    f.getParentFile().mkdirs();  
                }  
                FileOutputStream out = new FileOutputStream(filePathAndName);  
                byte[] bytes = temp.getBytes("UTF-8");  
                out.write(bytes);  
                out.flush();  
                out.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }  
        }
    }  
 
    /**
     * @param fileContent
     *            内容
     * @param patternString
     *            匹配的正则表达式
     * @param replace
     *            替换的内容
     * @return
     */
    public static String replaceAll(String fileContent, String patternString,  
            String replace) {  
        String str = "";  
        Matcher m = null;  
        Pattern p = null;  
        try {  
            p = Pattern.compile(patternString);  
            m = p.matcher(fileContent);  
            str = m.replaceAll(replace);  
        } catch (Exception e) {  
            e.printStackTrace();  
        } finally {  
            m = null;  
            p = null;  
        }  
        // 获得匹配器对象  
        return str;  
 
    }  
 
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值