2013-10-30 56 views
1

如何在Java中刪除或修剪文本文件中的一行? 這是我的程序,但它不起作用。 我想刪除在文本文件中的行,行包含用戶輸入使用java.BufferedReader刪除文本文件中的一行

try { 
     File inputFile = new File("temp.txt"); 
     File tempFile = new File("temp1.txt"); 

     BufferedReader reader = new BufferedReader(new FileReader(inputFile)); 
     BufferedWriter writer = new BufferedWriter(new FileWriter(tempFile)); 

     String lineToRemove = name; 
     String currentLine; 

     while((currentLine = reader.readLine()) != null) 
     { 
      //trim newline when comparing with lineToRemove 
      String trimmedLine = currentLine.trim(); 
      if(!trimmedLine.startsWith(lineToRemove)) 
      { 
       // if current line not start with lineToRemove then write to file 
       writer.write(currentLine); 
      } 
     } 
     writer.close(); 
     reader.close(); 
    } 
    catch(IOException ex) 
    { 
     System.out.println("Error reading to file '" + fileName + "'"); 

    } 
+4

什麼不行?乍一看,你的代碼看起來相當正確。 – tskuzzy

+0

你正在剝離所有的新生產線。 'readLine()'不包含換行符,並且你不寫任何。 –

回答

1

你不分離使用換行符行的話,那麼產生的文件將有一個單一的長行。一種可能的解決方法就是在每行後面寫行分隔符。

另一個可能的問題是,你只是檢查當前行是否以開始給定的字符串。如果你想檢查這行是否包含這個字符串,你應該使用contains方法。

第三個問題是,您不是在編寫修剪線,而是按照原樣編寫線。你真的不說你從程序會發生什麼,但如果你是應該輸出修剪線就應該是這樣的:

 if(!trimmedLine.contains(lineToRemove)) { 
      writer.write(trimmedLine); 
      writer.newLine(); 
     } 
0

startsWith()是罪魁禍首。您正在檢查該行是否以「lineToRemove」開頭。正如@Joni建議使用包含。