2013-01-03 51 views
0

可能重複:
Java - Find a line in a file and remove獲取身份證號碼,如果找到,刪除它

我有獲取身份證號碼,並搜索其記錄,如果存在的代碼,顯示它。

我想如果找到,請刪除它的記錄。 刪除一行(用戶記錄)的一種解決方案是創建另一個文件並複製所有行而不發現記錄。 任何人都可以告訴我另一種解決方案嗎? (簡單解決方案)

我BookRecords.txt文件是這樣的:

Name  Date  Number 

one 2002 22 
two 2003 33 
three 2004 44 
four 2005 55 

我的代碼找到:

String bookid=jTextField2.getText(); 
File f=new File("C:\\BookRecords.txt"); 
try{ 
    FileReader Bfr=new FileReader(f); 
    BufferedReader Bbr=new BufferedReader(Bfr); 
    String bs; 
    while((bs=Bbr.readLine()) != null){ 
    String[] Ust=bs.split(" "); 
    String Bname=Ust[0]; 
    String Bdate=Ust[1]; 
    String id = Ust[2]; 
    if (id.equals(bookid.trim()) 
    jLabel1.setText("Book Found, "+ Bname + " " + Bdate); 
    break; 
     } 
     } 
    } 
catch (IOException ex) { 
    ex.printStackTrace(); 
} 

請幫忙刪除線(一條記錄)

謝謝。

回答

1

處理單個文本文件是 - 呃 - 有點奇怪。但我建議,您創建一個新的文本文件(輸出):

PrintWriter out = new PrintWriter(new FileWriter("output.txt")); 

只寫匹配本書的ID行。

while (...) { 
    ... 
    if (!id.equals(bookid.trim())) { 
     out.println(bs); 
    } 
} 
out.close(); 

如果您喜歡,您可以稍後重命名文件。

+0

謝謝,請寫完整的代碼,而條件是什麼? – user1945649

+0

哪裏應該放置這個聲明? – user1945649

+0

'while'就是你已經擁有的一樣。只需更換你的「if」條件。 –

0

替換與退格字符的文本文件中的整條生產線的時候發現

\ b

+0

請填寫完整的代碼並說明! – user1945649

+0

嗨..正在編碼。意識到Java不理解'\ b'(退格)字符。此解決方案不起作用。您可以檢查Lenymm指出的解決方案 –