`
276833190
  • 浏览: 14397 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java 批量去除 文件中的所有注释代码,还可以去除js等文件中的注释

    博客分类:
  • java
阅读更多

 删除 java 文件的中的注释

 

核心逻辑是:

  1、 读取文件时,要一行一行的读取

  2、 在一行代码中 首先要判断 双引号内的 内容 不需要删除的

  3、 要删除 以 /*(/**)  */ 开始与结束的注释代码块  和 以// 开始的行注释

  4、 针对上述, 在写个方法 递归 目标文件或目录,即可实现批量删除文件中的注释

 

  废话不多说,直接上代码          

public class RemoveComments {
	
	private static boolean quoteFlag = false, lineStarFlag = false;
	
	public static void main(String[] args) {
		
		// 指定 一个要删除注释的 根目录
		fileRecursion(new File("E:/work/test2/WebRoot/aa"));
	}
	// 文件递归 
	public static void fileRecursion(File file){
		if(file != null){
			if(file.isDirectory()){
				File[] files = file.listFiles();
				for(int i = 0; files != null && i < files.length; i ++)
					fileRecursion(files[i]);
			}else{
				if(file.getName() != null && file.getName().endsWith(".java")){ // 只删除 .java文件中注释
					if(removeComments(file, file)){
						System.out.println(file.getName()+", remove:"+true);
					}else{
						System.out.println(file.getName()+", remove:"+false);
					}
				}
			}
		}
	}
	
	// 开始 删除注释
	public static boolean removeComments(File in, File out){
		BufferedReader read = read(in);
		StringBuffer sb = new StringBuffer(); // 删减注释后的代码
		if(read != null){
			String line = null;
			try {
				while((line = read.readLine()) != null){
					sb.append(analysisLine(line));
				}
			} catch (IOException e) {
				e.printStackTrace();
				return false;
			}finally{
				try {
					if(read != null)
						read.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
			
		}
		return write(out, sb.toString());
	}
	// 读文件 到缓冲区
	public static BufferedReader read(File file){
		BufferedReader br = null;
		try {
			br = new BufferedReader(new FileReader(file));
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		return br;
	}
	// 写文件
	public static boolean write(File file, String content){
		FileWriter fw = null;
		try {
			fw = new FileWriter(file);
			fw.write(content);
			fw.flush();
		} catch (IOException e) {
			e.printStackTrace();
			return false;
		}finally{
			try {
				if(fw != null)
					fw.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		return true;
	}
	
	// 分析 一行代码 是否有注释
	public static StringBuffer analysisLine(String code){
		StringBuffer sb = new StringBuffer();
		if(code == null)
			return sb;
		for(int i = 0; i < code.length(); i++){
			if(lineStarFlag){// 斜线星(/*) 开始了(包含了 /** )
				if(i + 1 < code.length() && code.charAt(i) == '*' && code.charAt(i + 1) == '/'){
					lineStarFlag = false;
					i ++;
					continue;
				}
			}else if (!quoteFlag) {// 先判断是否有 双引号
				if(code.charAt(i) == '"'){// 双引号 开始了
					sb.append(code.charAt(i));
					quoteFlag = true;
					continue;
				}else{ // 不是 双引号 
					if(i + 1 < code.length() && code.charAt(i) == '/'){
						if(code.charAt(i + 1) == '*'){// 以 /* 开始的注释代码
							lineStarFlag = true;
							i ++;
							continue;
						}else if(code.charAt(i + 1) == '/'){// 以 // 开始的注释代码
							i = code.length();// 直接 行结束了
						}else{
							sb.append(code.charAt(i));// 其他情况 
						}
					}else{
						sb.append(code.charAt(i));
					}
				}
			}else{
				if (code.charAt(i) == '"' && code.charAt(i - 1) != '\\') { // 双引号结束了
					sb.append(code.charAt(i));
					quoteFlag = false;
				}else{
					// 双引号开始了 但是没有结束
					sb.append(code.charAt(i));
				}
			}
		}
//		if(sb.length() != 0) // 如果 为空串,则 不添加换行
			sb.append("\n");
		return sb;
	}

}

 

 

分享到:
评论

相关推荐

    去掉代码注释的工具java \ c\c++、php等

    许多集成开发环境(IDEs)如IntelliJ IDEA、Eclipse等也提供了去除代码注释的功能,通常在“重构”或“源代码操作”菜单中可以找到。这种方法方便快捷,但可能不适用于批量处理大量文件。 7. **代码混淆工具** ...

    js、css 注释清理工具 (yuicompressor)

    1. **注释清理**:工具会识别并移除JavaScript和CSS文件中的注释内容。这在生产环境中尤为重要,因为注释主要是为了方便开发者的理解和维护,并不会对浏览器执行代码产生影响。 2. **代码混淆**:`yuicompressor`还...

    CSSJS批量压缩工具

    例如,`java -jar yuicompressor.jar input.css -o output.css --type css` 可以压缩CSS文件,`java -jar yuicompressor.jar input.js -o output.js --type js` 则用于压缩JavaScript文件。 3. **批量处理**:如果...

    JS中去掉空格的jar

    在Java开发中,如果有一个名为“diamond”的jar工具,可能是用于批量处理JavaScript文件,去除其中的空格,以优化代码或处理大量文本数据。这样的工具可能包含自定义的解析器和处理器,以适应不同的场景需求。 标签...

    各种开发语言注释清理工具

    在编程世界中,注释是源代码的重要组成部分,它们用于解释代码的功能、逻辑或用途,以便其他开发者能更好地理解和维护代码。然而,在某些情况下,如版本控制、代码审查或者生成文档时,可能需要批量移除或清理注释。...

    基于java的JSCSS压缩工具 YUI Compressor.zip

    )开发的一个开源工具,它支持Java平台,可以处理JavaScript和CSS文件,通过删除不必要的空格、换行和注释,以及进行变量名混淆等方式,实现代码压缩。这个压缩过程有助于减少网络传输的数据量,进而提升网页加载...

    批量字符修改软件 免费

    这样的软件通常支持多种格式的文件,包括但不限于文本文档(.txt)、编程源代码文件(如.java, .cpp, .py等)以及数据库导出文件等。 在编程领域,批量字符修改软件可以帮助开发者快速统一代码风格,比如将所有函数...

    js混淆压缩工具

    "JSCompress" 是这样一个工具,它能将JavaScript代码混淆成难以阅读的形式,同时还能进行压缩,去除代码中的空格、注释和换行,使得文件大小大大减小,从而加快网页加载速度。解压缩后的JSCompress工具无需安装,...

    js,css压缩工具

    - **yuicompressor-2.4.6.jar**: 这是YUI Compressor的Java可执行文件,是用于压缩JS和CSS的核心组件,支持去除代码中的空格、换行和注释,从而减小文件大小。 - **使用说明.txt**: 提供了详细的工具使用指南,帮助...

    cssjs压缩工具[jscsscompressor]

    开发的一款开源压缩工具,它能够将CSS和JavaScript文件进行混淆和压缩,去除代码中的空白、注释,并进行一些语法优化,从而显著减小文件大小,提高网页加载速度。它支持多种语言,包括Java和JavaScript版本。 2. **...

    JS CSS压缩工具

    JS压缩工具的主要功能是去除代码中的空白、注释和换行,同时进行变量名混淆,使得源代码更加紧凑。这样的过程称为“混淆”或“压缩”。常见的JS压缩工具有 UglifyJS、Terser 和 Google 的 Closure Compiler。这些...

    js、css压缩利器yuicompressor_2.4.2

    它基于 Java 实现,能够有效地去除代码中的空白、注释以及不必要的字符,同时还能进行变量名混淆,进一步减小文件体积。对于大型项目或者需要频繁更新的网站来说,使用 `yuicompressor` 进行自动化构建和部署,可以...

    软件著作权申请专用源代码整编工具

    7. **兼容性**:兼容多种编程语言,无论是Java、Python、C++还是JavaScript等,都能进行有效的处理。 通过使用这样的工具,开发者可以更专注于软件的开发,而不是在申请过程中花费大量时间进行格式调整。同时,这也...

    JSCSS压缩工具 YUI Compressor

    1. **代码压缩**:YUI Compressor 使用高效的算法去除代码中的空白符、注释,并对变量名进行混淆,极大地减小了文件体积。这对于网页加载时间的缩短具有显著效果,特别是在移动网络环境下。 2. **代码混淆**:除了...

    ant和yuicompressor 压缩css、js方案

    而YUI Compressor是一款JavaScript和CSS压缩工具,由Yahoo开发,它能去除代码中的空白和注释,合并多个文件为一个,以及进行变量名混淆,从而减少文件大小,提高网页加载速度。 首先,我们需要了解Ant的配置和使用...

    YUI+Ant 实现JS CSS压缩

    在Web开发中,为了提高页面加载速度和优化用户体验,开发者通常会使用代码压缩工具来减少JavaScript(JS)和CSS文件的大小。YUI Compressor是 Yahoo! 推出的一款开源的压缩工具,它能有效地去除代码中的空白和注释,...

    sourcestyler代码格式化工具

    这款工具支持多种编程语言,包括但不限于Java、Python、C++、JavaScript、HTML、CSS等,能够自动对代码进行缩进调整、括号对齐、注释整理等操作,让原本杂乱无章的代码变得整洁有序。 在实际开发过程中,代码风格的...

    clearcomments.zip

    例如,如果这是个编程项目,"clearcomments"可能是一个脚本或程序,用于自动化去除代码中的注释,以保持代码简洁或保护敏感信息。在内容管理或社交媒体管理中,它可能是指一个工具,用于批量删除或清理用户评论,以...

    代码美化器

    3. **格式化**:除了去除脏字符,该工具还可能提供代码格式化的功能,如自动缩进、调整括号对齐、统一注释风格等,使得代码符合特定的编码规范,如PEP8(Python编码规范)或Google编码风格。 4. **语言支持**:由于...

    Editplus 3[1].0

    要运行已编译的 Java 类文件,你可以进行如下设置: 菜单文本:Java 命令:c:\java\bin\java.exe 参数:$(FileNameNoExt) 初始目录:$(FileDir) “命令”部分应当替换为实际的 Java 解释器的路径。 例子 2. Borland...

Global site tag (gtag.js) - Google Analytics