一个简单的程序public class BufferedStream {
public static void main(String[] args) throws IOException {
FileReader fs=new FileReader("f:\\myjavacode\\Exa.java");
BufferedReader bs=new BufferedReader(fs);
while(bs.readLine()!=null){
String s=bs.readLine();
System.out.println(s);
}
}
}
我的Exa.java文件的内容就是1111111
                          2222222
                          3333333
                          4444444
                          5555555
                          6666666运行时它的结果显示为2222222
                    4444444
                    6666666它是跳着读的,我的理解是它应该全部打出来阿,readline()读出一行然后打印出来,不应该是跳行读的.求解

解决方案 »

  1.   


    while((string=bs.readLine())!=null){
       System.out.println(string);
    }这样就行了
      

  2.   

     while(bs.readLine()!=null){
                String s=bs.readLine();
                System.out.println(s);
                }是这样的当执行bs.readLine()!=null时
    bs.readLine();的返回值是文章第一行字符
    String s=bs.readLine();很显然到这句readLIne();方法已调用两次,s值为文章第二行。所以就出现了不想看到的结果。
    楼主这样改:
    public class BufferedStream {
        public static void main(String[] args) throws IOException {
            FileReader fs=new FileReader("f:\\myjavacode\\Exa.java");
            BufferedReader bs=new BufferedReader(fs);
             String s = "";
    while ((s = bs.readLine()) != null) {
    System.out.println(s);
    }
        }
    }
      

  3.   

    跳着读的原因是因为你在while循环里面读了一次,然后在循环体里面又读了一次,但是打印只打印了一次的,所以跳着读
      

  4.   

    readLine()每执行一次,就读一行也就是说,你拿来做判断的那一字符串,和你实际输出的字符串,已经不是一个字符串了