`
sunbin
  • 浏览: 349710 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

删除java注释

 
阅读更多

 

 

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 Administrator 
 * @时间 2009-7-30:下午09:28:10 
 */ 
public class ClearComment {  
 
    /** 根目录 */ 
    public static String rootDir = "C:\\Documents and Settings\\Administrator\\桌面\\hx\\src\\org\\hi";  
//"D:\\testdir  
    // D:\\workspace\\proj_map\\src\\com  
    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("/\\*(\\s*\\*\\s*.*\\s*?)*\\*\\/", "");  
        //patterns.put("/\\*(\\s*\\*?\\s*.*\\s*?)*", "");  
        Iterator<String> keys = patterns.keySet().iterator();  
        String key = null, value = "";  
        while (keys.hasNext()) {  
            // 经过多次替换  
            key = keys.next();  
            value = patterns.get(key);  
            filecontent = replaceAll(filecontent, key, value);  
        }  
        System.out.println(filecontent);  
        // 再输出到原文件  
        try {  
            File f = new File(filePathAndName);  
            if (!f.getParentFile().exists()) {  
                f.getParentFile().mkdirs();  
            }  
            FileOutputStream out = new FileOutputStream(filePathAndName);  
            byte[] bytes = filecontent.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;  
 
    }  
 

分享到:
评论

相关推荐

    使用python脚本删除java文件中的注释

    使用python脚本快速删除java文件中的注释

    代码注释删除小工具(java)

    用java编写的代码注释删除小工具,能去文本中掉//和/* */注释。 第一个按钮的功能为去掉文本框1中代码的注释,输出到文本框2. 第二个按钮的功能为批量删除文件中的注释,并输出到当前目录(新文件名为xxx.txt)。但...

    删除 java 文件 注释

    java中删除java文件里的注释完整版

    Python删除Java源文件中全部注释的实现方法

    在Python脚本中删除Java源文件注释的思路是: 1. 遍历指定目录下的所有`.java`文件。 2. 读取文件内容,并逐字符进行分析。 3. 根据当前的分析状态(初始状态、斜杠状态、块注释状态、行注释状态、字符串状态等),...

    java文件注释清除工具

    1.仅支持删除java文件和txt文件;(如果想支持其他格式的文件,请用"."+格式后缀名替换clear_annot类的103行".txt"); 2.仅支持删除以注释开头的行该行前部的注释;(主要是为了删除jd-gui.exe反编译的文件前部的烦人...

    java_SQL文件批量删除注释

    java_SQL文件批量删除注释 ,实现自动批量处理Sql脚本中的注释,方便发布您自己的脚本,简单好用。亲测可以用的,谢谢支持。

    清除Java代码注释

    本篇文章将详细探讨如何在Java项目中有效地清除注释。 首先,我们来看一下使用MyEclipse这个强大的Java集成开发环境(IDE)来清除注释的方法。MyEclipse是基于Eclipse定制的一个版本,提供了许多方便的开发工具和...

    Java 删除项目里面的注释所用到的包.zip

    这个"Java 删除项目里面的注释所用到的包.zip"可能包含了一个或多个工具或库,专门用于自动化删除Java源代码中的注释。在进行这类操作时,需要注意一些关键点以确保代码质量和安全性。 首先,让我们了解一下为什么...

    删除注释工具类

    "删除注释工具类"的工作原理可能是通过解析Java源代码文件,识别并定位到特定类型的注释,如Javadoc注释、行内注释(//)和块注释(/*...*/),然后安全地移除这些注释,同时保持代码结构的完整。这个工具可能接受...

    JAVA 去除注释的jar工具

    首先,了解Java注释的种类。Java中的注释主要有三种类型:单行注释(//)、多行注释(/*...*/)和文档注释(/**...*/)。单行注释用于快速添加临时性或简单的说明,多行注释通常用于大段的解释,而文档注释(也称为...

    Java注释规范整理.pdf

    ### Java注释规范详解 #### 一、引言 在软件开发过程中,代码注释扮演着极其重要的角色。良好的注释不仅有助于提升代码的可读性和可维护性,还能促进团队成员之间的有效沟通。然而,关于Java注释的具体规范却常常...

    ajava注释说明

    在深入探讨Java注释的重要性与应用之前,我们先简要回顾一下给定文件的信息:标题为“ajava注释说明”,描述中强调了这是学习Java的必备文档,并鼓励大家积极学习Java。虽然部分文本似乎包含了乱码或非标准字符,但...

    清除java项目中的注释

    在Java开发过程中,注释是必不可少的部分,它们用于解释代码的功能和逻辑,便于团队协作和后期维护。然而,在某些情况下,比如发布生产环境的代码或者为了优化编译速度,我们可能需要清除代码中的注释。以下将详细...

    java反编译去除注释一建去除超级简单

    标题"java反编译去除注释一建去除超级简单"指的是一个简单易用的方法,可以快速地将Java字节码反编译并移除其中的注释。通常,反编译是用于理解二进制代码的行为,或者在没有源代码的情况下进行调试和维护。注释虽然...

    删除源程序中的注释

    然而,在某些特定情况下,如优化代码大小、保护知识产权或者创建混淆版本时,可能会有需求删除源程序中的注释。本文将深入探讨删除源代码注释的原理、方法以及可能的影响。 一、为何要删除源代码中的注释 1. 代码...

    Java注释规范整理1

    关于Java注释的技巧,包括利用空行和缩进来区分代码和注释,保持代码整洁。在多重嵌套的代码段结束后添加简短的注释,指出控制范围的结束。注释与注释分隔符之间留一个空格,方便查找。避免使用带有外框的块注释,...

    Java 批量删除html中注释内容的方法

    在Java编程中,处理HTML文件时有时需要去除其中的注释内容,以实现特定的功能需求,比如在给定的项目中,需要读取HTML文本文件并删除其中的注释以便进一步处理或存储。删除HTML注释的过程涉及到对HTML结构的理解以及...

    JavaAPI部分练习代码全注释

    这个压缩包“JavaAPI部分练习代码全注释”显然是为了帮助Java初学者或者有经验的开发者巩固和深化对Java API的理解而准备的。以下是一些关于Java API的重要知识点: 1. **基础类库**:Java API包括了I/O流、集合...

    C/C++/Java 源代码注释清除工具

    描述中提到的“可以对文件夹操作”意味着该工具支持批量处理,用户可以指定一个包含多个源代码文件的目录,工具会遍历其中的所有C、C++和Java文件,并逐一删除注释。这种批量处理能力极大地提高了工作效率,尤其是在...

    删除代码中的注释

    这个过程被称为“删除代码中的注释”。下面将详细介绍如何进行这一操作,以及涉及的相关技术。 1. **选择目录**: 在删除代码中的注释时,首先需要确定要处理的代码范围。这通常是一个包含源代码文件的目录。例如...

Global site tag (gtag.js) - Google Analytics