-1

既存の .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番号を取得する方法がわかりません。

4

3 に答える 3

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 とは異なるものが保存されている場合を除きます。

于 2013-07-16T11:08:48.013 に答える
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 から始まる製品とシーケンス番号が含まれていると想定しています。

于 2013-07-16T11:20:38.233 に答える
1
 InputStreamReader converter = new InputStreamReader(System.in);
 BufferedReader in = new BufferedReader(converter);
 while(CurLine = in.readLine())

 //after exiting the loop 

StringBuilder メソッド「indexOf」および「subString」を使用できます。その後、最後のIDをキャッチできます。

于 2013-07-16T11:09:40.667 に答える