- 遇到的问题:
在第一次实现的时候,没有注意到使用缓冲流写入数据的时候会清空原有的数据,大忌!!! - 改进方法:
1.在缓冲流读数据过程中,使用stringBuffer
的append()
方法把判断为不是//的字符保存起来。在使用缓冲流写数据时作为write
方法参数传进去。
2.判断是否为//的方法:使用trim()
方法去除首位空格,再使用startsWith("//")
判断读到字符是不是以//开始。
if(!line.trim().startsWith("//")) {
sb.append(line).append("\r\n");
}
完整实现如下:
import java.io.BufferedReader;
import java.io.File;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
public class RemoveCommentsTest {
public static void main(String[] args) {
File file = new File("C:\\Users\\10262863\\Desktop\\encoding.txt");
remComments(file);//调用删除//函数
}
public static void remComments(File javaFile) {
StringBuffer sb = new StringBuffer();
try {
FileReader fr = new FileReader(javaFile);
BufferedReader br =new BufferedReader(fr);
while(true) {
String line =br.readLine();
if(null == line)
break;
System.out.println(line);
//如果不是以//就保存在sb中
if(!line.trim().startsWith("//")) {
sb.append(line).append("\r\n");
}
}
} catch (IOException e) {
// TODO: handle exception
e.printStackTrace();
}
try{
FileWriter fw = new FileWriter(javaFile);
PrintWriter pw = new PrintWriter(fw);
pw.write(sb.toString());
fw.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}