public class ClearComment { public static void main(String args[]) { removeComment("D:\\Workspaces\\Softphone\\src"); } /** * 清除注释 * @param dir */ public static void removeComment(String dir){ try { deepDir(dir); } catch (FileNotFoundException e) { e.printStackTrace(); }catch (UnsupportedEncodingException e) { e.printStackTrace(); } } /** * 递归查找出根目录下所有文件进行清除注释 * @param rootDir * @throws FileNotFoundException * @throws UnsupportedEncodingException */ 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) { 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; } }
相关推荐
好的注释应该简洁明了,描述清楚代码的目的、功能和使用方法,而不是简单地重复代码本身的内容。同时,注释应与代码同步更新,避免出现“僵尸注释”,即注释内容与实际代码不符的情况。 在实际操作中,我们可以利用...
标题中的“一个可以去掉注释的小程序”指的是一个专门设计用来从源代码文件中移除注释的程序。...它是一个实用的工具,对于那些希望在保持代码可读性的同时,减少编译输出中注释内容的开发者而言,尤其有价值。
注释的内容要清楚、明了,含义准确,防止注释二义性。保持注释与其描述的代码相邻,即注释的就近原则。 4. 对代码的注释应放在其上方相邻位置,不可放在下面。对数据结构的注释应放在其上方相邻位置,不可放在下面...
本文主要探讨编程规范中关于代码注释的几个关键方面:注释风格、文件注释、类注释以及函数注释。 1. **注释风格**: 编程规范中推荐使用`//`单行注释或`/* */`多行注释,两者选一并保持一致性。`//`单行注释更常用...
ACO蚁群算法优化KELM核极限学习机(ACO-KELM)回归预测MATLAB代码 代码注释清楚。泰勒图 Matlab代码 案例详细提供2套泰勒图画法:原始数据的泰勒图与对数据标准化后的泰勒图 笔者对此泰勒图代码进行了详细的注释,可...
SSA-RFR麻雀搜索算法优化随机森林回归预测MATLAB代码 代码注释清楚。 main为主程序,可以读取EXCEL数据。 很方便,初学者容易上手。
粒子群算法PSO优化随机森林RFR的回归预测MATLAB代码 代码注释清楚,可以读取EXCEL数据,使用换自己数据集。 很方便,初学者容易上手。
ACO蚁群算法优化KELM核极限学习机(ACO-KELM)回归预测MATLAB代码 代码注释清楚。 main为主程序,可以读取EXCEL数据。 很方便,容易上手。 (电厂运行数据为例)
4. 注释的内容要清楚、明了,含义准确,防止注释二义性。 5. 保持注释与其描述的代码相邻,即注释的就近原则。 6. 对代码的注释应放在其上方相邻位置,不可放在下面。 7. 变量、常量的注释应放在其上方相邻位置或右...
支持Windows和Linux的设置进程的CPU核心亲和性的代码,简单了封装成一个方法了,代码注释清楚。
基于PCA主成分分析的BP神经网络回归预测MATLAB代码 代码注释清楚。 先对数据集进行主成分分析,自主根据贡献率选择主成分;同时计算KMO验证值;用PCA以后数据进行BP神经网络回归预测。 可以读取EXCEL数据,使用换...
4. 易于维护:注释清楚地解释了每个字段的作用,方便后期的代码阅读和修改。 代码生成器的工作原理一般分为以下步骤: 1. 连接数据库:首先,生成器需要连接到指定的数据库,获取表结构信息。 2. 分析表结构:解析...
- 点击对应的模板,例如`Types`,然后在右侧的编辑框中输入或修改注释内容。你可以使用 `${}` 来插入动态变量,如类名 `${class_name}` 或作者 `${author}`。 - 修改完成后点击`Apply`,然后`OK`以保存设置。 2. ...
1. 注释应简洁明了,清楚地说明字段的业务含义和用途。 2. 对于特殊的数据类型,如日期、时间戳,应在注释中说明其具体含义,如记录创建时间或更新时间。 3. 对于外键字段,应指出关联的表和字段。 4. 对于非空或有...
基于k折交叉验证的支持向量机回归预测MATLAB程序,采用n折交叉验证确定损失参数C与核参数g;代码注释清楚。 main为主程序,读取EXCEL数据,也可以换自己数据集。 很方便,容易上手。
这是一个有名的Android游戏,疯狂足球,本源码包整理了该游戏的完整源码资源,尤其是本游戏代码中的注释,每个类的功能作用都注释的很清楚,对android游戏开发的编写会起到很好的参考作用,非常感谢作者分享这么好的...