当前位置: 技术问答>java相关
非常奇怪的IO,bufferedReader.readLine()问题。。。
来源: 互联网 发布时间:2015-09-15
本文导语: BufferedReader br=new BufferedReader(file); while(br.read()!=-1){ System.out.println(br.readLine()); } 这样写可打出文件中所有的行。而下面的: BufferedReader br=new BufferedReader(file); while(br.readLine()!=null){ System.out.println(br.readLine());...
BufferedReader br=new BufferedReader(file);
while(br.read()!=-1){
System.out.println(br.readLine());
}
这样写可打出文件中所有的行。而下面的:
BufferedReader br=new BufferedReader(file);
while(br.readLine()!=null){
System.out.println(br.readLine());
}
却是隔行打印,我用了一个有20行的文本文件测试,结果上边的能打出全部行而下边的只打出了2,4,6,8这些行。为什么?奇怪!!!
还有一个问题,用br.read()的时候,每行的第一个字符都没了,咋回事???晕死我了。。。
while(br.read()!=-1){
System.out.println(br.readLine());
}
这样写可打出文件中所有的行。而下面的:
BufferedReader br=new BufferedReader(file);
while(br.readLine()!=null){
System.out.println(br.readLine());
}
却是隔行打印,我用了一个有20行的文本文件测试,结果上边的能打出全部行而下边的只打出了2,4,6,8这些行。为什么?奇怪!!!
还有一个问题,用br.read()的时候,每行的第一个字符都没了,咋回事???晕死我了。。。
|
应该是while((str=br.readLine())!=null){
System.out.println(str);
}
System.out.println(str);
}
|
你每调用一次read()或者readLine(),指针都会移动的。像下面这么写就可以了:
BufferedReader br=new BufferedReader(file);
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
BufferedReader br=new BufferedReader(file);
String line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
|
太簡單了吧!
br.read()已經從文件中讀走了一個字符;你再用br.readLine()當然
讀到的就是一行中少了第一個字符
第二種情況也同樣
你先是br.readLine()!=null讀出了一行,但並沒用System.out;而
再次用System.out.println(br.readLine())當然會輸出新的一行了;
如果你改成
BufferedReader br=new BufferedReader(file);
char ch;
while((ch=br.read())!=-1){
System.out.print(ch);
System.out.println(br.readLine());
}
或
BufferedReader br=new BufferedReader(file);
String str;
while((str=br.readLine())!=null){
System.out.println(str);
}
就一點也不奇怪了
br.read()已經從文件中讀走了一個字符;你再用br.readLine()當然
讀到的就是一行中少了第一個字符
第二種情況也同樣
你先是br.readLine()!=null讀出了一行,但並沒用System.out;而
再次用System.out.println(br.readLine())當然會輸出新的一行了;
如果你改成
BufferedReader br=new BufferedReader(file);
char ch;
while((ch=br.read())!=-1){
System.out.print(ch);
System.out.println(br.readLine());
}
或
BufferedReader br=new BufferedReader(file);
String str;
while((str=br.readLine())!=null){
System.out.println(str);
}
就一點也不奇怪了
|
while(br.readLine()!=null){
System.out.println(br.readLine());
}
其中每个循环(一次打印)br.readLine()被执行了两次,当然是各行打印!!
System.out.println(br.readLine());
}
其中每个循环(一次打印)br.readLine()被执行了两次,当然是各行打印!!
|
你自己写错了,
两段while里的都不一样,
给分吧!
哈哈!
两段while里的都不一样,
给分吧!
哈哈!
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。