在命令行中从输入文件中读取

时间:2009-12-28 16:03:23

标签: java input

这次我有一个非常蹩脚的问题,这个问题很完美,但现在却没有:

        BufferedReader br = new BufferedReader(new InputStreamReader(
                System.in));

        while (br.readLine() != null) {
            System.out.println(br.readLine());
        }

输入文件:

1
2
3
4
5
6
7
8
9

在命令行中:$ java myprogram< inputfile中

上述代码的结果是:

    2
    4
    6
    8
null

但预期输出应与输入文件相同!

我哪里错了?!

4 个答案:

答案 0 :(得分:7)

你不应该在每个循环中调用readLine()两次。

每次调用它时,它都会读取一个新行。打印每个电话的结果:

while (true) {
  String line = br.readLine();
  if (line == null)
    break;
  System.out.println(line);
}

答案 1 :(得分:4)

您正在两次调用br.readLine()。它在while条件下调用它一次,然后实际打印出来。这就是为什么你只打印每一行。

编辑:您的情况应该是:

while(br.ready()){
     System.out.println(br.readLine());
}

答案 2 :(得分:2)

您可以修改代码,如:

String str=null;
   while ((str=br.readLine())!= null) {
      System.out.println(str);
   }

答案 3 :(得分:0)

code from this blog

FileReader f = new FileReader(file);
BufferedReader bufferReader = new BufferedReader(f);
String line;
// Read file line by line and print on the console
while ((line = bufferReader.readLine()) != null)   {
        System.out.println(line);
}
相关问题