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文件中的注释
用java编写的代码注释删除小工具,能去文本中掉//和/* */注释。 第一个按钮的功能为去掉文本框1中代码的注释,输出到文本框2. 第二个按钮的功能为批量删除文件中的注释,并输出到当前目录(新文件名为xxx.txt)。但...
java中删除java文件里的注释完整版
在Python脚本中删除Java源文件注释的思路是: 1. 遍历指定目录下的所有`.java`文件。 2. 读取文件内容,并逐字符进行分析。 3. 根据当前的分析状态(初始状态、斜杠状态、块注释状态、行注释状态、字符串状态等),...
1.仅支持删除java文件和txt文件;(如果想支持其他格式的文件,请用"."+格式后缀名替换clear_annot类的103行".txt"); 2.仅支持删除以注释开头的行该行前部的注释;(主要是为了删除jd-gui.exe反编译的文件前部的烦人...
java_SQL文件批量删除注释 ,实现自动批量处理Sql脚本中的注释,方便发布您自己的脚本,简单好用。亲测可以用的,谢谢支持。
本篇文章将详细探讨如何在Java项目中有效地清除注释。 首先,我们来看一下使用MyEclipse这个强大的Java集成开发环境(IDE)来清除注释的方法。MyEclipse是基于Eclipse定制的一个版本,提供了许多方便的开发工具和...
这个"Java 删除项目里面的注释所用到的包.zip"可能包含了一个或多个工具或库,专门用于自动化删除Java源代码中的注释。在进行这类操作时,需要注意一些关键点以确保代码质量和安全性。 首先,让我们了解一下为什么...
首先,了解Java注释的种类。Java中的注释主要有三种类型:单行注释(//)、多行注释(/*...*/)和文档注释(/**...*/)。单行注释用于快速添加临时性或简单的说明,多行注释通常用于大段的解释,而文档注释(也称为...
### Java注释规范详解 #### 一、引言 在软件开发过程中,代码注释扮演着极其重要的角色。良好的注释不仅有助于提升代码的可读性和可维护性,还能促进团队成员之间的有效沟通。然而,关于Java注释的具体规范却常常...
在深入探讨Java注释的重要性与应用之前,我们先简要回顾一下给定文件的信息:标题为“ajava注释说明”,描述中强调了这是学习Java的必备文档,并鼓励大家积极学习Java。虽然部分文本似乎包含了乱码或非标准字符,但...
在Java开发过程中,注释是必不可少的部分,它们用于解释代码的功能和逻辑,便于团队协作和后期维护。然而,在某些情况下,比如发布生产环境的代码或者为了优化编译速度,我们可能需要清除代码中的注释。以下将详细...
标题"java反编译去除注释一建去除超级简单"指的是一个简单易用的方法,可以快速地将Java字节码反编译并移除其中的注释。通常,反编译是用于理解二进制代码的行为,或者在没有源代码的情况下进行调试和维护。注释虽然...
然而,在某些特定情况下,如优化代码大小、保护知识产权或者创建混淆版本时,可能会有需求删除源程序中的注释。本文将深入探讨删除源代码注释的原理、方法以及可能的影响。 一、为何要删除源代码中的注释 1. 代码...
关于Java注释的技巧,包括利用空行和缩进来区分代码和注释,保持代码整洁。在多重嵌套的代码段结束后添加简短的注释,指出控制范围的结束。注释与注释分隔符之间留一个空格,方便查找。避免使用带有外框的块注释,...
在Java编程中,处理HTML文件时有时需要去除其中的注释内容,以实现特定的功能需求,比如在给定的项目中,需要读取HTML文本文件并删除其中的注释以便进一步处理或存储。删除HTML注释的过程涉及到对HTML结构的理解以及...
这个压缩包“JavaAPI部分练习代码全注释”显然是为了帮助Java初学者或者有经验的开发者巩固和深化对Java API的理解而准备的。以下是一些关于Java API的重要知识点: 1. **基础类库**:Java API包括了I/O流、集合...
描述中提到的“可以对文件夹操作”意味着该工具支持批量处理,用户可以指定一个包含多个源代码文件的目录,工具会遍历其中的所有C、C++和Java文件,并逐一删除注释。这种批量处理能力极大地提高了工作效率,尤其是在...
这个过程被称为“删除代码中的注释”。下面将详细介绍如何进行这一操作,以及涉及的相关技术。 1. **选择目录**: 在删除代码中的注释时,首先需要确定要处理的代码范围。这通常是一个包含源代码文件的目录。例如...