2013-07-16 108 views
-1

如何查找已存在的.txt文件中的所有字符串「ID」並獲取有多少個字符串?在.txt文件中查找所有字符串「ID」

我有一個txt文件,如:

Product ID = "001", Product Name = "P1" 

Product ID = "002", Product Name = "P2" 

Product ID = "003", Product Name = "P3" 

... 

我想在文件末尾添加Product ID = "LASTEST_ID_PLUS_1, Product Name = "new",但不知道如何獲得最後的ID號。

+10

請分享您的代碼或你如何做到這一點的想法。 – Maroun

+1

你到目前爲止嘗試過什麼?天真的方式是逐行讀取文件並解析它們以獲得**產品ID =「**並且只存儲最後一個ID,直到您到達EOF。 – MrSmith42

回答

2
String filename = "test.txt"; 
int numOfIds = 0; 
try (BufferedReader br = new BufferedReader(new FileReader(filename))) { 
    String line = null; 
    while ((line = br.readLine()) != null) { 
     if (line.contains("Product ID = ")) { 
      numOfIds++; 
     } 
    } 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

應該是一個很好的起點。保存最後一次讀取的ID,然後將其用於追加。

編輯: 再次查看你的問題後,我甚至不知道你的.txt文件爲什麼有Product ID =。讓txt文件看起來像這樣更容易處理:

001,P1 
002,P2 
003,P3 

,除非你沒有顯示整個文件,並有不同的東西比存儲產品ID。

+0

它解決了我的問題。非常感謝您 – Mee

+0

請注意,此解決方案假定產品ID是連續存儲的並且沒有間隙 - 如果這是數據的實際情況,那麼讀取最後一行,解析出ID,轉換爲int並遞增也將起作用。 – cfeduke

1
InputStreamReader converter = new InputStreamReader(System.in); 
BufferedReader in = new BufferedReader(converter); 
while(CurLine = in.readLine()) 

//after exiting the loop 

你可以使用StringBuilder方法「indexOf」和「subString」。 然後你可以捕捉到最後一個ID。

1
LineNumberReader lnr = null; 
try { 
    File file = new File("productList.txt"); 
    lnr = new LineNumberReader(new FileReader(file)); 
    lnr.skip(Long.MAX_VALUE); 
    int lineNumber = lnr.getLineNumber(); 
    PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(file, true))); 
    String productName = getProductName(); // may be a user input 
    out.println("Product ID = \""+lineNumber+"\", Product Name = \""+productName+"\"\n"); 
    out.close(); 
} catch (Exception ex) { 
    // handle it 
} finally { 
    try { 
     lnr.close(); 
    } catch (IOException ex) { 
     Logger.getLogger(H.class.getName()).log(Level.SEVERE, null, ex); 
    } 
} 

我假設每一行包含產品和序列號開始1

相關問題