2010-02-16 9 views
0

J'ai un gros fichier dynamique et je veux vérifier une valeur booléenne et puis s'il est vrai, obtenir le nombre d'une choseComment puis-je lire cette Condition et compter les myvals?

s'il vous plaît aidez-moi

par exemple ceci est mon dossier (il a peut-être 20000 lignes)

. 
. 
. 
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 
. 
. 
. 

J'ai écrit ce code pour gérer, mais je ne peux pas parce que dans ce cas, je lis ligne par ligne et je dois vérifier si valeur1 est vrai, alors en 2 ligne après que je dois compter myval ...

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); 
    } 

Comment puis-je vérifier l'état et après cela, si c'est vrai, je compte myvals?

Merci beaucoup

Répondre

1

Si vous voulez seulement faire un passage dans le fichier, vérifiez que chaque ligne et vérifier à la fois son nombre de myval et si elle a value1 = true. Vous saurez quel est le nombre de myval, mais vous ne devrez pas le signaler sauf si value1 est vrai.

0

Essayez:

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++; 
} 
+0

Le 'myval' n'apparaît pas nécessairement sur la même ligne que' value1 = true', du moins selon son exemple. –

+0

Je ne peux pas parce que dans la sortie je peux vérifier juste cette ligne "fsfds fdsfsdf gfhgfh valeur1 = vrai fdsfd fdfdsr ewref" et comment puis-je continuer tout en boucle ??? – Freeman

+0

Le code ci-dessus va boucler jusqu'à EOF. La première fois qu'il trouve une ligne avec "value1" suivi de "= true", il commence à compter les occurrences de "myval" sur cette ligne et tout ce qui suit. Cela continuera jusqu'à l'EOF. – nicerobot