2017-08-08 132 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語句後,markedChar值變爲-2?java.io.IOException:標記無效

Thx爲每個答案Nico。

+0

什麼是br?什麼是'markedChar'? –

+0

'markedChar'在哪裏? –

+0

請張貼周邊環境,以便我們更好地瞭解變量。 – Milk

回答

1
public void mark(int readAheadLimit) 
     throws IOException 

標記流中的當前位置。後續調用重置() 將嘗試重新定位到此點的流。

...

參數:

readAheadLimit - 對可能仍保留該標記可讀取字符數量的限制。讀取字符達到此限制或超出後嘗試重置流 可能會失敗。大於輸入緩衝區大小的限制值 將導致分配大小不小於限制的新緩衝區 。因此應該小心使用較大的值 。

您將readAheadLimit設置爲1個字符,然後讀取整行。這使得商標無效。