Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 文件读取器仅读取文件的偶数行_Java_Filestream - Fatal编程技术网

Java 文件读取器仅读取文件的偶数行

Java 文件读取器仅读取文件的偶数行,java,filestream,Java,Filestream,文件内容有九行,但结果只显示偶数行内容, 最后一行为空。 那么为什么这个方法只读取文件的偶数行呢? 很奇怪……这是因为您调用了两次readLine方法,每次调用都从底层源读取一行新行(当然,如果它存在的话)。这里的解决方案只是使用while循环中的str1变量,而不是第二次调用readLine。这是因为您要调用readLine方法两次,每次调用都从底层源读取一行新行(当然,如果它存在的话)。这里的解决方案只是使用while循环中的str1变量,而不是第二次调用readLine。请注意,这行代码读

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

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

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

请注意,这行代码读了两遍:
一次在“while”声明中,一次在循环中。

删除“str1=br1.readLine();”在“while”循环的第一行中。

请注意,您将该行读了两遍:
一次在“while”声明中,一次在循环中。
删除“str1=br1.readLine();”在“while”循环的第一行。在代码中

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();
        }
    }
}
while((str1=br1.readLine())!=null){/在代码中

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

while((str1=br1.readLine())!=null){/,因为您使用了
readLine()
两次。您应该按如下方式修改它

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

因为您使用了两次
readLine()

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

@史莱克·丁:当然,不用担心,但是在
while
循环中有变量赋值比在循环中写两次更常见;一次在循环之前,一次在循环内部。另外,我会把你的问题向上投票,以取消对它的反对票;不知道为什么会有人投反对票。@史莱克·丁:当然,不用担心,但更常见的是to在
循环中进行变量赋值,而不是在
循环中写两次;一次在循环之前,一次在循环内部。此外,我将对您的问题进行上表决,以取消对该问题的反对票;不确定为什么会有人否决该问题。