java_拷贝源代码,同时将注释符删掉,保留其余内容(包括换行)
package experiment9.exp2; /*拷贝Java源码文件如My.java至另一个文件中如My2.java,要求My2.java删除My.java的所有注释,其他完全相同。 //注:Java注释有两种,一种形如:/*……*/ //另一种形如 //……. //*/ import experiment9.FileName; import java.io.*; import java.nio.charset.StandardCharsets; public class RegularExpression { /*创建缓冲流对象:它是过滤流,是对节点流的包装(也就是说,它依赖于节点流,需要基于FileReader/FileInputStream来包装使用.一般来说,推荐使用BufferedIO来操作文件比较好(比直接单纯使用FileIO来的方便和高效智能 */ public static void main(String[] args) throws IOException { BufferedReader bufferedReader=new BufferedReader(new FileReader(FileName.fileName3, StandardCharsets.UTF_8)); BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter(FileName.fileNameOut2/*,StandardCharsets.UTF_8*/));//值得注意的是,在将内容写出的时候,是否默认(一般中文为gbk,还是要改为utf-8编码),在中,可以把末尾null都打印显示出来,不过在一般的记事本不会有这样的情况出现(大不了逐个字符读入呗) String string=null; char [] chars=new char[1000]; StringBuffer stringBuffer=new StringBuffer(); while(bufferedReader.read(chars)!=-1){ stringBuffer.append(chars); } string=stringBuffer.toString(); string=string.replaceAll("//", "").replaceAll("/\\*|\\*/",""); System.out.println(string); bufferedWriter.write(string); /*如下做法会引起换行失真*/ // while( (string=bufferedReader.readLine())!=null){ // string=string.replaceAll("//", "").replaceAll("/\\*|\\*/",""); // //值得注意的时,类似于强制类型转换一样,经过replaceAll方法处理的字符串本身不会发生改变,二十相当于处理源字符串的一个副本,并返回处理过的副本. // // 由于没有\*这一字符,所以你还需要将\\获得\,然后在加*,即\\*,这才代表regex中的普通字符串\*,而\*进一步被解释为'*'是普通字符而非元字符. // bufferedWriter.write(string+"\n"); // System.out.println(string); // } bufferedWriter.flush(); //step2:刷新缓冲区 //step3:释放资源: bufferedReader.close(); bufferedWriter.close(); System.out.println("操作完毕."); /* A String containing the contents of the line, not including any line-termination characters, or null if the end of the stream has been reached without reading any characters*/ } }
package experiment9; import com.hankcs.hanlp.model.perceptron.common.IStringIdMap; public class FileName { /*当你需在多个.java中要用同一个变量(更多的是常量,比如文件名(路径名)) * 那么就可以建立一个储存这些信息的静态成员,这样就可以通过类名.静态变量名来访问 * 这样做的好处时可以降低含有读写文件的.java的耦合,即使项目移动到其他目录,也只需要做少量的修改.*/ static String prefix1 = "D:\\OneDrive\\Java\\ProjectCodeInIDEA\\", prefix2 = "D:\\OneDrive\\Java\\ProjectCodeInIDEA\\experiment_doc\\"; public static String fileName = prefix2 + "dataExperiment9\\ReadText.txt";//英文测试文本 public static String fileName2 = prefix2 + "dataExperiment8\\三国演义(罗贯中).txt"; static String fileNameOut = prefix1 + "src\\experiment9\\StudyRead\\FileName.java"; public static String fileName3 = prefix2 + "dataExperiment9\\My.java"; public static String fileNameOut2 = prefix2 + "dataExperiment9\\My2.java" ; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2021-10-12 ssh免密登录_云主机/远程主机免密码验证登录(2021.10practiced)(windows10_ssh登录远程linux)/sshd_config配置
2021-10-12 微信小程序_(2022)微信小程序开发者后台管理登录/开发成员管理/开发设置中设置(云)服务器/数据拉取权限配置/appID查看/邮箱修改
2021-10-12 vscode@默认快捷键(json文件)查看@when clause context@配置快捷键生效条件