删除 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; } }
相关推荐
许多集成开发环境(IDEs)如IntelliJ IDEA、Eclipse等也提供了去除代码注释的功能,通常在“重构”或“源代码操作”菜单中可以找到。这种方法方便快捷,但可能不适用于批量处理大量文件。 7. **代码混淆工具** ...
1. **注释清理**:工具会识别并移除JavaScript和CSS文件中的注释内容。这在生产环境中尤为重要,因为注释主要是为了方便开发者的理解和维护,并不会对浏览器执行代码产生影响。 2. **代码混淆**:`yuicompressor`还...
例如,`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. **批量处理**:如果...
在Java开发中,如果有一个名为“diamond”的jar工具,可能是用于批量处理JavaScript文件,去除其中的空格,以优化代码或处理大量文本数据。这样的工具可能包含自定义的解析器和处理器,以适应不同的场景需求。 标签...
在编程世界中,注释是源代码的重要组成部分,它们用于解释代码的功能、逻辑或用途,以便其他开发者能更好地理解和维护代码。然而,在某些情况下,如版本控制、代码审查或者生成文档时,可能需要批量移除或清理注释。...
)开发的一个开源工具,它支持Java平台,可以处理JavaScript和CSS文件,通过删除不必要的空格、换行和注释,以及进行变量名混淆等方式,实现代码压缩。这个压缩过程有助于减少网络传输的数据量,进而提升网页加载...
这样的软件通常支持多种格式的文件,包括但不限于文本文档(.txt)、编程源代码文件(如.java, .cpp, .py等)以及数据库导出文件等。 在编程领域,批量字符修改软件可以帮助开发者快速统一代码风格,比如将所有函数...
"JSCompress" 是这样一个工具,它能将JavaScript代码混淆成难以阅读的形式,同时还能进行压缩,去除代码中的空格、注释和换行,使得文件大小大大减小,从而加快网页加载速度。解压缩后的JSCompress工具无需安装,...
- **yuicompressor-2.4.6.jar**: 这是YUI Compressor的Java可执行文件,是用于压缩JS和CSS的核心组件,支持去除代码中的空格、换行和注释,从而减小文件大小。 - **使用说明.txt**: 提供了详细的工具使用指南,帮助...
开发的一款开源压缩工具,它能够将CSS和JavaScript文件进行混淆和压缩,去除代码中的空白、注释,并进行一些语法优化,从而显著减小文件大小,提高网页加载速度。它支持多种语言,包括Java和JavaScript版本。 2. **...
JS压缩工具的主要功能是去除代码中的空白、注释和换行,同时进行变量名混淆,使得源代码更加紧凑。这样的过程称为“混淆”或“压缩”。常见的JS压缩工具有 UglifyJS、Terser 和 Google 的 Closure Compiler。这些...
它基于 Java 实现,能够有效地去除代码中的空白、注释以及不必要的字符,同时还能进行变量名混淆,进一步减小文件体积。对于大型项目或者需要频繁更新的网站来说,使用 `yuicompressor` 进行自动化构建和部署,可以...
7. **兼容性**:兼容多种编程语言,无论是Java、Python、C++还是JavaScript等,都能进行有效的处理。 通过使用这样的工具,开发者可以更专注于软件的开发,而不是在申请过程中花费大量时间进行格式调整。同时,这也...
1. **代码压缩**:YUI Compressor 使用高效的算法去除代码中的空白符、注释,并对变量名进行混淆,极大地减小了文件体积。这对于网页加载时间的缩短具有显著效果,特别是在移动网络环境下。 2. **代码混淆**:除了...
而YUI Compressor是一款JavaScript和CSS压缩工具,由Yahoo开发,它能去除代码中的空白和注释,合并多个文件为一个,以及进行变量名混淆,从而减少文件大小,提高网页加载速度。 首先,我们需要了解Ant的配置和使用...
在Web开发中,为了提高页面加载速度和优化用户体验,开发者通常会使用代码压缩工具来减少JavaScript(JS)和CSS文件的大小。YUI Compressor是 Yahoo! 推出的一款开源的压缩工具,它能有效地去除代码中的空白和注释,...
这款工具支持多种编程语言,包括但不限于Java、Python、C++、JavaScript、HTML、CSS等,能够自动对代码进行缩进调整、括号对齐、注释整理等操作,让原本杂乱无章的代码变得整洁有序。 在实际开发过程中,代码风格的...
例如,如果这是个编程项目,"clearcomments"可能是一个脚本或程序,用于自动化去除代码中的注释,以保持代码简洁或保护敏感信息。在内容管理或社交媒体管理中,它可能是指一个工具,用于批量删除或清理用户评论,以...
3. **格式化**:除了去除脏字符,该工具还可能提供代码格式化的功能,如自动缩进、调整括号对齐、统一注释风格等,使得代码符合特定的编码规范,如PEP8(Python编码规范)或Google编码风格。 4. **语言支持**:由于...
要运行已编译的 Java 类文件,你可以进行如下设置: 菜单文本:Java 命令:c:\java\bin\java.exe 参数:$(FileNameNoExt) 初始目录:$(FileDir) “命令”部分应当替换为实际的 Java 解释器的路径。 例子 2. Borland...