2017-08-08 14 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(); 
     } ... 

if-statementを渡した後にmarkedCharの値が-2に変化するのはなぜですか?java.io.IOException:無効なマーク

回答ごとにThx。ニコ。

+0

「br」とは何ですか? 'markedChar'とは何ですか? –

+0

'markedChar'はどこですか? –

+0

変数をよりよく理解できるように、周囲のコンテキストを投稿してください。 – Milk

答えて

1
public void mark(int readAheadLimit) 
     throws IOException 

ストリームの現在位置をマーク。その後のreset()の呼び出し は、この点までストリームの位置を変更しようとします。

...

パラメータ:

readAheadLimit - マークを保持しながら読み込むことができる文字数の上限。この制限を超えて文字を読み取った後でストリーム をリセットしようとすると失敗することがあります。制限 の値が入力バッファのサイズより大きい場合、新しいバッファ が割り当てられ、そのサイズは制限を超えません。そのため、大きい値 を注意して使用する必要があります。

readAheadLimitを1文字に設定してから、行全体を読み取ります。これはマークを無効にしました。

関連する問題