黑马程序员技术交流社区
标题:
关于IO流无意中发现的小问题
[打印本页]
作者:
黄昆
时间:
2012-7-1 09:00
标题:
关于IO流无意中发现的小问题
file.txt文件中的内容
abcd0
abcd1
abcd2
abcd3
abcd4
import java.io.*;
class BufferedReader
{
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("file.txt");
BufferedReader bufr=new BufferedReader(fr);
String line=null;
while((line=bufr.readLine())!=null)
{
System.out.println(line);//System.out.println(bufr.readLine());两次的结果为什么不一样呀?
}
bufr.close();
}
}
作者:
邓超军
时间:
2012-7-1 09:07
System.out.println(line);//System.out.println(bufr.readLine());两次的结果为什么不一样呀?
肯定不一样啊!在while条件语句中,bufr已经读取过一行数据了,也就是line;而bufr.readLine()是又一次读取了一行数据,也就是说是读取的line下面的一行数据,所以不一样。
比如line=abcd0,则bufr.readLine()=abcd1 。
作者:
Forever。
时间:
2012-7-1 12:15
当然不一样,readline方法是一次读一行,不是每次都读第一行。
是一行一行挨个读下去的,楼主再仔细看一下io流的视频吧。
作者:
黑马罗坚
时间:
2012-7-1 15:08
class BufferedReader{
}
楼主类名不要跟java提供的重复否者会让你死都不知道怎么死的。。。
作者:
周恺
时间:
2012-7-1 15:50
如果你是要读取所有文本数据的话.
public static void main(String[] args) throws IOException
{
FileReader fr=new FileReader("file.txt");
BufferedReader bufr=new BufferedReader(fr);
String line=null;
while((line=bufr.readLine())!=null)//while循环进行判断的时候,已经执行了一次readLine(),此时游标指向第一行,将第一行数据读入缓冲区.
{
System.out.println(line);//正确,直接将缓冲区的数据输出
System.out.println(bufr.readLine());//错误,又执行了一次readLine()方法,原来缓冲区里是数据没有读取就被刷新,游标指向第二行,将第二行的数据输出,
}
bufr.close();
}
作者:
周恺
时间:
2012-7-1 15:53
还有,就像板凳说的,如果你用BufferedReader来做自定义类名,组长真的会找你玩命.
作者:
杨朔
时间:
2012-7-1 16:02
楼主已经把读取的一行付给line这个变量了,要是在调用一次只会多此一举,只需要直接打印line就行了
,在调用readLine只会读取下一行,因为readLine自动会向下打印。
作者:
陌花╮有意、
时间:
2012-7-1 23:49
readline()每次读一行后会有标记,下次读另一行,依次进行
作者:
吴扬
时间:
2012-7-2 01:13
while((line=bufr.readLine())!=null)
{
System.out.println(line);
System.out.println(bufr.readLine());
}
因为在while循环里面已经读取了一行数据,将它存到line这个字符串变量中,而readLine()方法其实也是调用了read()方法读取单个字符,每当读取一个字符后,指针就会指向下一个字符,所以readLine()方法也会自动的向后面移一行,因此执行System.out.println(bufr.readLine());这句话的时候,其实是将第二行打印了出来。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2