2012-07-25 57 views
1

我很難在文本文件中刪除一行文本行,我使用了這段代碼,但是我最終刪除了所有的行,需要一些幫助。在使用java的文本文件中刪除一行文本行

try //vacation leave/ 
{ 
    File inputFile = new File("Adlawan" + code1); 
    File tempFile = new File("AdalwanTempFile"); 

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

    String lineToRemove = "AdlawanJan2012"; 
    String currentLine; 

    while((currentLine = reader.readLine()) != null) 
    { 
     //trim newline when comparing with lineToRemove 
     String trimmedLine = currentLine.trim(); 
     if(trimmedLine.equals(lineToRemove)) 
     { 
     writer.write(currentLine); 
     } 
    } 
    writer.close(); 
    reader.close(); 

    if(!inputFile.delete()) 
    { 
     JOptionPane.showMessageDialog(null, "Could not rename file"); 
     return; 
    } 
    if(!tempFile.renameTo(inputFile)) 
     JOptionPane.showMessageDialog(null, "Could not rename file"); 


} 
catch(Exception e) 
{ 
    JOptionPane.showMessageDialog(null, " "); 
} 

在文件中的數據是這樣的:

AdlawanJan2012休假離開,現金-0.6875
AdlawanFeb2012休假離開,現金-0.6875
AdlawanMar2012休假離開,現金-0.6875

修剪線條後的所需結果:

AdlawanFeb2012 Vacation-Leave-Credits -0.6875
AdlawanMar2012休假離開,現金-0.6875

謝謝...

回答

3

我想你想刪除行的文件,如果符合「lineToRemove」變量開始,在這種情況下,您可能需要使用「startsWith」方法而不是「等於」方法。

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); 
    } 
} 
+0

我能夠刪除兩行,但刪除的行是行,AdlawanFeb2012 Vacation-Leave-Credits -0.6875和AdlawanMar2012 Vacation-Leave-Credits -0.6875。我想刪除該行(AdlawanJan2012 Vacation-Leave-Credits-0.06875。或者更準確地說,我想刪除特定的行,在這種情況下(AdlawanJan2012 Vacation-Leave-Credits-0.06875)非常感謝幫助。:) – 2012-07-25 09:29:13

+0

我想你忘了添加「!」在條件是爲什麼其他行被刪除。它應該是「if(!trimmedLine.startsWith(lineToRemove))」。 – hidemaru 2012-07-25 10:07:15

+0

是非常感謝你,我忘記了......(:非常感謝你,startWith方法是關鍵。 – 2012-07-25 10:09:46

1

trim()方法只刪除前導和尾隨白色空間,而不是空白後的字符。

String lineToRemove = "AdlawanJan2012"; 


....

String trimmedLine = currentLine.trim(); 
if(trimmedLine.substring(0, 14).equals(lineToRemove)) { 
    //Your deletion logic 
} 
0

It'a一個好主意,逐行讀取文件內容線和將其複製到另一個文件(中的臨時文件)最好是隨機存取文件並省略要刪除的行。只需將其餘部分複製到臨時文件並省略要刪除的行。然後將該文件重命名爲原始名稱。沒有樣品請。我需要你自己做到這一點,你會通過你自己學習。祝你好運