2013-04-25 68 views
0

我讀的文本文件的第6行與此代碼的第一行:LineNumberReader跳過該文件

File finish = new File("C:/ABC Statements final/"); 
     File[] finf = finish.listFiles(); 
     String[] filenames1 = finish.list(); 
     LineNumberReader br = null; 
     PrintWriter bw = null; 
     for (int k = 0; k < filenames1.length; k++) { 
      try { 
      br = new LineNumberReader(new FileReader(new File("C:/ABC Statements final/" + filenames1[k]))); 
      String line = br.readLine(); 

      while (line != null && br.getLineNumber() <= 6) { 
       line = br.readLine(); 
       System.err.println(line); 
      } 


      } catch (Exception asd) { 
       System.err.println(asd); 
      } 

我的輸出不打印文件的第一行。誰知道我做錯了什麼?

回答

4

那是因爲你吃了第一線,爲read之前閱讀在while循環的第二行這是從來沒有印刷。

String line = br.readLine(); // First line was read here. 

while (line != null && br.getLineNumber() <= 6) { 
    line = br.readLine(); // Your first line was overriden here. 
    System.err.println(line); 
} 

讓你上面的代碼看起來是這樣的: -

String line = null; 
while ((line = br.readLine()) != null && br.getLineNumber() <= 6) { // Line is read and checked - both together 
    System.err.println(line); 
} 
+0

我怎麼能輸出While循環外的同一行? – ErrorNotFoundException 2013-04-25 14:27:03

1

交換這兩條線在

line = br.readLine(); 
System.err.println(line); 

,以便它是這樣

System.err.println(line); 
line = br.readLine(); 

您呼叫的第一次印刷之前讀兩遍。

1

第9行,你讀的第一線。因爲你打印