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在循环中进行变量赋值,而不是在循环中写两次;一次在循环之前,一次在循环内部。此外,我将对您的问题进行上表决,以取消对该问题的反对票;不确定为什么会有人否决该问题。