2017-08-08 6 views
-5
public void createNewUser(String name, String passwort) { 
     try { 
      br = new BufferedReader(new FileReader("Data.txt")); 
     } catch (FileNotFoundException brCreateError) { 
      brCreateError.printStackTrace(); 
     } 

     try { 
      br.mark(1); 
      System.out.println(br.readLine()); 
      try { 
       if(br.readLine()==null) { 
        noUser=true; 
       }else { 
        noUser=false; 
       } 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
      br.reset(); 

     } catch (IOException brMarkError) { 
      brMarkError.printStackTrace(); 
     } ... 

Pourquoi la valeur markedChar change à -2 après avoir passé le instruction if?java.io.IOException: Mark invalide

Thx pour chaque réponse Nico.

+0

Qu'est-ce que 'br'? Qu'est-ce que 'markedChar'? –

+0

Où est marquéChar'? –

+0

Veuillez poster le contexte environnant afin que nous puissions mieux comprendre les variables. – Milk

Répondre

1
public void mark(int readAheadLimit) 
     throws IOException 

marque la position actuelle dans le flux. Les appels suivants à reset() vont tenter de repositionner le flux à ce point.

...

Paramètres:

readAheadLimit - Limitation du nombre de caractères qui peut être lu tout en conservant la marque. Une tentative de réinitialisation du flux après avoir lu des caractères jusqu'à cette limite ou au-delà peut échouer. Une valeur limite supérieure à la taille du tampon d'entrée entraînera l'allocation d'un nouveau tampon dont la taille n'est pas inférieure à la limite. Par conséquent, les grandes valeurs doivent être utilisées avec précaution.

Vous définissez le readAheadLimit sur 1 caractère puis lisez une ligne entière. Ceci a invalidé la marque.