2017-05-24 116 views
-1

我正在製作一個基本上從txt文件加載的小程序。該txt文件具有以下數據:閱讀線每隔一行跳過

NAME1, xx, xx, xx, xx (Where XX are numbers) 
    NAME2, xx, xx, xx, xx 
    etc... 

該文件沒有設置結束,因爲它可以稍後編輯以添加其他名稱。 我要讀它的代碼如下:

private void doLoadProfile() { 
    String filePath = System.getProperty("user.dir") + File.separator + "profiles.txt"; 
    System.out.println(filePath); 

    try { 
     FileInputStream fis = new FileInputStream(filePath); 
     BufferedReader in = new BufferedReader(new InputStreamReader(fis)); 
     while (in.readLine() != null) { 
      displayLog.appendText(in.readLine() + "\n"); 
     } 
    } catch (FileNotFoundException e) { 
     displayLog.appendText("\n Error: file not found" + e.toString()); 
    } catch (IOException e) { 
     displayLog.appendText("\n Error: " + e.toString()); 
    } 
} 

然而,這只是所有其他線路輸出,由於某種原因,它跳過線(我有一個txt文件,4號線,我只得到了第2和第4線)。我嘗試添加額外的2條線,並再次獲得第2,第4和第6。

+1

每個'readLine'調用遍歷到下一行並返回它,也是在'while'條件中的一個。您需要閱讀一次,存儲在變量中,並在需要時使用變量。現在,重複的地方(使用googling for'java readline跳過行'可能與'site:stackoverflow.com'結果來自這個網站)。 – Pshemo

+1

那麼,你每次迭代調用readLine()兩次。別。調用一次,將結果存儲在一個變量中,檢查它是否爲空,然後追加它。或者使用readAllLines(https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#readAllLines-java.nio.file.Path-) –

回答

4

您正在調用in.readLine()兩次(一次在while語句中讀取第一行,再次在appendText中讀取第二行)。在字符串中緩存while語句中的值,然後使用它。