2013-11-03 114 views
0

我想從Java文件中讀取一些行。我在文件中有4行,但問題是它只讀取了2行。下面的代碼:Java - 從文件讀取

BufferedReader flux_in = new BufferedReader(new InputStreamReader(new FileInputStream("abc.txt"))); 
String line; 
while (flux_in.readLine() != null) 
{ 
    line = flux_in.readLine(); 
    System.out.println(line); 
} 

回答

7

這是因爲你的兩倍,經常你應該打電話readLine

您在while條件中的第一個呼叫剛剛將線路排除。

BufferedReader flux_in = new BufferedReader(new InputStreamReader(new FileInputStream("abc.txt"))); 
String line; 
while ((line = flux_in.readLine()) != null) 
{ 
    System.out.println(line); 
} 
0

在你的代碼中,循環測試中的調用消耗一行,然後循環體中的調用消耗另一行。所以它只會打印每隔一行。

String s = null; 
while ((s = flux_in.readLine()) != null) 
{ 
    System.out.println(s); 
} 
2

它確實讀取了所有這些信息,雖然沒有完全按照您的方式。

BufferedReader flux_in = new BufferedReader(new InputStreamReader(new FileInputStream("abc.txt"))); 
String line; 
while (flux_in.readLine()!=null) //one line is read here 
{ 

    line = flux_in.readLine(); //the next one here 
    System.out.println(line); 
} 
0

BufferedReader是有狀態的並記住已從文件中讀取的內容。每調用一次readLine()將光標移動到下一行。您正在呼叫readLine()每行兩次:while循環和line分配。試試這個:

String line = flux_in.readLine(); 
while (line != null) { 
    System.out.println(line); 
    line = flux_in.readLine(); 
} 
0

您正在閱讀的兩次(在同時條件並在同時循環,所以它顯示一個,然後跳過下你的代碼改成這樣:

try { 
    BufferedReader flux_in = new BufferedReader(new FileReader("abc.txt")); 
    String line; 
    while ((line = flux_in.readLine()) != null) 
     System.out.println(line); 
} catch(Exception e) { System.out.println("Error"); }