0

我有一个动态的大文件,我想检查一个布尔值,然后如果它是真的,得到一个东西的计数

请帮我

例如这是我的文件(它可能有 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 是否为真,然后在我必须计算 myval 之后的 2 行中......

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

如果您只想通过文件,只需检查每一行并检查其计数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 回答