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"
;
}
posted @   xuchaoxin1375  阅读(5)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享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@配置快捷键生效条件
点击右上角即可分享
微信分享提示