Java filereader bufferedreader打印出一定数量的行

时间:2010-10-14 18:26:27

标签: java bufferedreader filereader

我正在尝试使用java中的文件阅读器和缓冲阅读器从txt文件中打印一定数量的行。该文件有超过100000行,但我只想打印前100行。

我提出的代码看起来像这样:

public class main {
    public static void main(String args[]) throws Exception {
        FileReader fr = new FileReader("words.txt");
        BufferedReader br = new BufferedReader(fr);
        String s;

        int count = 0;

        while (count <101)
            {
            while((s = br.readLine()) != null)

            {
            System.out.println(s);
            count++;
            System.out.println(count);
            }

        }
        fr.close();
        } 

}

打印出类似这样的内容:

it

1

was

2

a

3

sunny

4

day

...

依此类推(正在印刷的整数就是这样,我可以看到计数器正在递增)。麻烦的是,它一直到文件的末尾,而不是在第100行文本之后停止。我的问题是,如何在第100行之后停止打印?

提前致谢。

4 个答案:

答案 0 :(得分:2)

你需要结合你的条件

while (count < 100 && (s = br.readLine()) != null) { ...

(编辑:正如johnbk提到的,计数检查应为< 100

答案 1 :(得分:2)

好吧,你的内循环一直在运行直到文件结束。你必须捕获两个条件,顺便说一句你试图打印101行,而不是100 。要打印100行,您需要检查c&lt; 100因为count初始化为'0'

while ( count < 100  && (s = br.readLine()) != null) {
   System.out.println(s);
   count++;
  }

答案 2 :(得分:1)

实际上只是一个猜测 - 但我可能会尝试结合这两个条件:

   while ((s = br.readLine()) != null && count < 100)
      System.out.println(s + " [line: "+(count++)+"]");

也许?

答案 3 :(得分:1)

你不想使用嵌套的while循环,你想要像

这样的东西
while(count < 101 && (s = br.readLine()) != null){

一旦达到计数,这将停止文件读取。