`
conkeyn
  • 浏览: 1529028 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

清除JAVA 项目中的注释

阅读更多

、“/\*\*(\s*\*\s*.*\s*?)*”     引号内才是可以使用的正则。

 

 /**
     * @hibernate.property
     * @return
     */
    public String getPicfile() {
        return picfile;
    }


 2、

 

3、清除JAVA中所有注释,支持形式有

 

//   1
//22222
   
      //   2  
   
  /*   第1行   测试单行   */    
   
        /*   第2行   测试单行带前空白   */      
   
  /*   第3行   测试单行带尾部字符   */   3
   
        /*   第4行   测试单行前空白后带字符   */  4
   
  /*  
   
    5   测试多行  
   
  */        

/**
 6   测试多行 

*/

/** 7测试单行 */

 

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 = "D:\\workspace\\proj_map\\src\\com";
//"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;

	}

}
 

 

fff

 

分享到:
评论
2 楼 tedeum 2014-01-17  
收*藏*了 正需要 多谢分享
1 楼 longhua828 2013-05-10  
至少判断下文件后缀名吧?

相关推荐

    清除java项目中的注释

    总之,清除Java项目中的注释是一个有策略性的任务,需要根据项目需求和团队协作模式来选择合适的方法。MyEclipse提供了一个直观的界面来快速完成此任务,而Ant和Maven则提供了更灵活的自动化解决方案。在执行清理...

    清除Java代码注释

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

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

    为了适应这些情况,一种专门用于清除C、C++和Java源代码中注释的工具应运而生。本文将深入探讨这款工具的设计初衷、功能特点、操作便利性以及它在软件开发中的实际应用价值。 首先,这款“C/C++/Java 源代码注释...

    java文件注释清除工具

    能良好的解决使用jd-gui.exe软件反编译程序后,在生成的java文件前部存在的注释: ...3.创建一个java项目,将该项目导入到ide中,修改类的第一行, PATH_STRING变量的值,使其指向需要作用的目录即可;

    java_SQL文件批量删除注释

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

    java经典去注释程序

    本项目名为“java经典去注释程序”,专门针对Java代码中的三种主要注释类型——行内注释(//)、块注释(/* */)和Javadoc注释(/** */)进行清除。 这个程序采用了枚举(enum)数据类型,这是Java中一种特殊的数据...

    java反编译工具以及去掉注释工具

    我们利用jd-gui反编译.classs代码之后,导出来的java源代码里面含有/**,其实这些标记是之前的java源码的注释,我们如何去掉这些标识了?...原理很简单,用java的正则表达式清理每个文件中的jd相关的注释

    翻译java源码中注释-java_src:java源码注释翻译成中文

    总之,“翻译java源码中注释-java_src”项目旨在消除语言障碍,使全球开发者能更轻松地共享和学习Java开源项目,这对于技术的传播和发展具有积极意义。通过高质量的注释翻译,我们可以提升代码的可读性,降低理解和...

    Java注释规范整理.pdf

    然而,关于Java注释的具体规范却常常缺乏明确的标准,导致开发者在实践中难以遵循一致的方法。本文旨在基于网络资源、专业书籍以及实践经验,整理一套详细的Java注释规范指南,以期为开发者提供参考依据。 #### 二...

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

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

    删除源程序中的注释

    2. 遗失信息:注释中可能包含了开发者对某些问题的解决方案、历史变更记录等重要信息,一旦删除可能永久丢失。 3. 法律风险:在开源项目中,删除许可证注释可能违反开源协议,引发法律纠纷。 4. 影响团队协作:...

    JAVA项目坦克大战代码内涵详细解释

    【Java项目:坦克大战】 坦克大战是一款经典的策略游戏,它基于Java编程语言实现,通过控制坦克在地图上移动,消灭敌方坦克并保护己方基地。这个项目旨在帮助学习者理解面向对象编程、游戏逻辑设计以及图形用户界面...

    java 俄罗斯方块 源码+文档+注释+资源文件

    Java 实现的俄罗斯方块项目是一个经典的编程练习,它涵盖了多方面的编程技术,包括图形用户界面(GUI)、事件处理、对象编程以及算法设计。在这个项目中,我们将深入探讨以下几个核心知识点: 1. **Java GUI编程**...

    俄罗斯方块 Java 源码 含海量注释

    这个项目是使用Java来实现经典游戏——俄罗斯方块。它展示了如何利用Java的面向对象特性来构建游戏逻辑,同时提供了丰富的注释,这对于初学者来说是一份极好的学习资料。 1. **面向对象设计**:俄罗斯方块的核心是...

    java连连看 项目源码

    - **注释**:源码中应包含必要的注释,解释代码的功能和实现细节。 通过分析和学习这个Java连连看项目源码,初学者不仅可以掌握Java编程基础,还能深入了解GUI编程、算法设计以及软件开发的实践技巧。同时,这也是...

    俄罗斯方块源码及注释(java)

    7. **面向对象编程**:Java是一种面向对象的语言,源码中的各个类代表游戏中的不同元素,如Tetromino代表块,GameBoard代表游戏面板。通过类和对象的交互,实现了游戏的各种功能。 通过阅读和分析这个Java版的...

    自主研发的批量保留路径清理代码注释工具

    聪哥创作的一款批量保留路径清理代码注释的工具,目前兼容大部分常见的代码注释,涵盖c、java、python、php、js、html、css、mysql、node、vue、ruby等常见编程项目的注释无损清理。 2023年8月19日更新日志: 1.对...

    java计算器程序带详细注释

    在Java编程领域,设计一个功能完备且易于理解的计算器程序是学习基本界面设计、事件处理及数学运算逻辑的理想实践项目。本文将深入解析一个带有详细注释的Java计算器程序,旨在帮助读者理解其核心概念与实现细节。 ...

    JAVA_连连看_源代码行行注释

    《JAVA_连连看_源代码行行注释》 该程序是使用Java语言实现的一款连连看游戏,通过Myeclipse 8.51作为开发环境,兼容Windows XP、Windows 7等操作系统。游戏具备基本功能,如退出、重列、再来一局,适合在普通...

    泡泡龙游戏JAVA版(带注释).zip

    这个项目不仅是一个完整的可运行游戏,而且代码带有注释,这对于初学者或者想要提升Java编程技能的人来说,是一个很好的学习资源。使用IntelliJ IDEA这样的集成开发环境(IDE)可以方便地打开和阅读源代码,帮助理解...

Global site tag (gtag.js) - Google Analytics