【问题标题】:File Reader only read even number line of file文件阅读器只读取文件的偶数行
【发布时间】:2012-06-16 07:15:06
【问题描述】:
public static void main(String[] args) {
    // TODO Auto-generated method stub

    BufferedReader br1 = null;
    try {
        br1= new BufferedReader(new FileReader(new File("D:\\Users\\qding\\Desktop\\spy.log")));
    } catch (FileNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String str1;
    try {
        while((str1 = br1.readLine()) != null){
            str1 = br1.readLine();
            System.out.println(str1);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } finally{
        try {
            br1.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

文件内容有九行,但结果只显示偶数行内容, 最后一行为空。 那么为什么这个方法只读取文件的偶数行呢? 好奇怪……

【问题讨论】:

    标签: java filestream


    【解决方案1】:

    这是因为您调用了两次readLine 方法,并且每次调用都会从底层源读取一个新行(当然,如果它存在的话)。这里的解决方案是简单地使用while循环中的str1变量,而不是第二次调用readLine

    【讨论】:

    • @Shrek Ding:当然,不用担心,但更常见的是在while 循环中进行变量赋值,而不是写两次;一次在循环之前,一次在循环内。另外,我会赞成您的问题,以消除对它的反对票;不知道为什么有人反对。
    【解决方案2】:

    在您的代码中

    while((str1 = br1.readLine()) != null){   // <= 1
        str1 = br1.readLine();                // <= 2
        System.out.println(str1);
    }
    

    您在一个循环迭代中读取一行两次。删除第 2 行即可。

    【讨论】:

      【解决方案3】:

      请注意,您已阅读该行两次:
      一次在“while”声明中,一次在循环内。
      删除 'str1 = br1.readLine();'在“while”循环的第一行。

      【讨论】:

        【解决方案4】:

        因为你使用了两次readLine()。你应该修改如下

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

        【讨论】:

          猜你喜欢
          • 2021-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-11
          相关资源
          最近更新 更多