0

我正在尝试从 Java 文件中读取一些行。我在文件中有 4 行,但问题是它只读取了 2 行。这是代码:

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);
}
4

5 回答 5

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);
}
于 2013-11-03T19:27:45.833 回答
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);
}
于 2013-11-03T19:28:14.543 回答
0

在您的代码中,循环测试中的调用消耗一行,然后循环体中的调用消耗另一行。所以它只会打印每隔一行。

String s = null;
while ((s = flux_in.readLine()) != null)
{
    System.out.println(s);
}
于 2013-11-03T19:27:58.927 回答
0

BufferedReader是有状态的并记住已经从文件中读取的内容。每次调用readLine()将光标移动到下一行。您readLine()每行调用两次:在while循环和line分配中。试试这个:

String line = flux_in.readLine();
while (line != null) {
    System.out.println(line);
    line = flux_in.readLine();
}
于 2013-11-03T19:28:31.037 回答
0

您正在阅读该行两次(在 while条件和 while循环中,因此它显示一个然后跳过下一个。将您的代码更改为:

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"); }
于 2013-11-03T19:28:58.387 回答