0

特定の文字列が見つかるまで、テキスト ファイルを 1 行ずつ読み取る必要があります。私は使用してBufferedReader.readLine()いますが、デバッグすると、ファイルの 3 行目から開始され、その後の行がスキップされることがわかります。これが私のコードです:

try {
    reader = new BufferedReader(new FileReader(path));

    String line1 = null;

    while ((line1 = reader.readLine()) != null) {
        if (line1.toString() == invocation0) {
            found = true;
            return false;
        } else if (line1 == invocation1) {
            found = true;
            return true;
        }
    }
} catch (Exception e) {
    e.printStackTrace();
} finally {
    if (reader != null)
        try {
            reader.close();
        } catch (IOException e) {
        }
}

これについてさまざまな解決策を試しましたが、まだこの問題を解決できないため、本当に助けていただければ幸いです。

ファイルの内容は次のようになります。

.//============================================= ============================= .// ファイル: abc.mark .// 説明: 何でも .// 注意: 何でも . // .//=========================================== =============================== .invoke RemoveClass("プロパティ",0)

4

2 に答える 2

3
if(line1.equals(invocation0))

equals()メソッドを使用してString値を比較します。

returnまた、内の代わりにif、 を使用できますbreak。ただし、これは単なる提案です。

于 2013-03-27T09:49:00.823 に答える
0

BufferedReader は何もスキップしてはいけません。残念ながら、行をスキップする read メソッドを作成しているのはあなたです。等価演算子==は、2 つの文字列の内容を比較するのではなく、それらが同じオブジェクトであるかどうかを比較します。2 つの方法で回避できる可能性があります。

  1. invocation0 で intern() を呼び出します (とにかく、line1 オブジェクトは以前にインターンされている必要があります)
  2. より正確には equals メソッドを使用 line1.equals(invocaton0)

このリンクは、理解を深めるのに役立つ場合があります。

于 2013-03-27T10:16:29.870 に答える