在.txt文件中查找所有字符串“ID”

时间:2013-07-16 11:00:51

标签: java

如何在现有的.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号。

3 个答案:

答案 0 :(得分: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不同。

答案 1 :(得分:1)

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

 //after exiting the loop 

你可以使用StringBuilder方法“indexOf”和“subString”。 那么你可以抓住最后一个id。

答案 2 :(得分: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开头。