- 遇到的問題:
在第一次實現的時候,沒有注意到使用緩衝流寫入數據的時候會清空原有的數據,大忌!!! - 改進方法:
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();
}
}
}