0

動的な大きなファイルがあり、ブール値をチェックして、それが true の場合はカウントを取得したい

私を助けてください

たとえば、これは私のファイルです(おそらく20000行あります)

.
.
.
fsfds fdsfsdf gfhgfh value1=true fdsfd fdfdsr ewref

dfdfsd dsfds  dfdf fdsfsd 
dfdfsd dsfds myval dfdf fdsfsd 
dfdfsd dsfds dfdf fdsfsd 
dfdfsd dsfds myval dfdf fdsfsd 

fdfdfddsfds
fdfdsfdfdsfdfdsfsdfdsfdsfdsfds
.
.
.

私はそれを処理するためにこのコードを書きましたが、できません。なぜなら、この場合は行ごとに読んでいて、value1 が true かどうかをチェックしなければならないからです。

public void countMethod() {
        int i = 0; //count
        try {
            BufferedReader input =
                    new BufferedReader(new FileReader(new File("I:\\1.txt")));
            String line;
            while ((line = input.readLine()) != null) {
                if (line.substring(line.indexOf("value1")).split("=")[1].equals("true")) {
                    if (line.indexOf("myval") != -1)
                        i++;
                }
            }
            input.close();
        }
        catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("Count is : " + i);
    }

どうすれば状態を確認できますか?その後、それが本当ならmyvalsを数えますか?

どうもありがとう

4

2 に答える 2

1

ファイルを1回だけ通過させたい場合は、各行を調べて、そのカウントとmyval含まれているかどうかの両方を確認してくださいvalue1 = true。の数がわかりますmyvalが、真でない限り報告する必要はありませんvalue1

于 2010-02-16T19:55:23.770 に答える
0

試す:

boolean found = false;
while ((line = input.readLine()) != null) {
  if (!found)
    found=line.substring(line.indexOf("value1")).split("=")[1].equals("true");
  if (found && line.indexOf("myval") != -1)
    i++;
}
于 2010-02-16T19:55:11.673 に答える