黑马程序员技术交流社区
标题:
关于IO流的一个小问题
[打印本页]
作者:
李征
时间:
2013-5-26 09:20
标题:
关于IO流的一个小问题
本帖最后由 李征 于 2013-5-26 13:47 编辑
import java.io.*;
class Demo
{
public static void main(String[] args) throws IOException
{
FileReader f = new FileReader("123.txt");
BufferedReader buf = new BufferedReader(f);
//Sreing s = null;
while((buf.readLine())!=null)
//while((s = buf.readLine())!=null)
{
System.out.println(buf.readLine());
//System.out.println(s);
}
buf.close();
}
}
123.txt里就是
1
2
3
4
如果把注释里的内容替换掉现在的内容,那么结果是对的,正常输出,但是把S这个引用去掉,直接用buf.readLine(),就成了隔行输出,结果是:
2
4
null
真心搞不明白了,求解
作者:
画饼
时间:
2013-5-26 09:31
因为你第一次读 while((buf.readLine())!=null)
你没有保存起来啊。 1 3 都在这里
System.out.println(buf.readLine());
你再打印的时候就是2 4了,
作者:
画饼
时间:
2013-5-26 09:32
要是你用字符串装起来,打印字符串,就可以保证每次取出来的都被打印了!!
作者:
刘茂林
时间:
2013-5-26 09:34
while((buf.readLine())!=null)
//while((s = buf.readLine())!=null)
关键是这两句 你发现没 第二句 是 s = buf.readLine()) 将读出的数据赋值给s 每次都要赋值给s 循环一次 就复制一次啦。。
作者:
student
时间:
2013-5-26 09:36
本帖最后由 student 于 2013-5-26 09:38 编辑
你在while循环条件中,调用buf.readLine()方法,读取文本文件123.txt里的一行数据,然后返回该行数据内容。
但是你在while循环体里System.out.println(buf.readLine()),表示读取下一行,所以只输出第2行和第4行的数据,
第1行和第3行是数据虽然读取到了,但是没有System.out.println()输出,所以运行结果只有2和4。
作者:
First
时间:
2013-5-26 12:15
import java.io.*;
class Demo
{
public static void main(String[] args) throws IOException
{
FileReader f = new FileReader("d:\\1.txt");
BufferedReader buf = new BufferedReader(f);
//String s = null;
while((buf.readLine())!=null)//***********@1
//while((s = buf.readLine())!=null)
{
System.out.println(buf.readLine());//*************@2
//System.out.println(s);
}
buf.close();
}
}
/*
这个程序没有加 String s 的操作流程是
1. @1 读取 @1 = 1;
2. @2 读取 @2 = 2;
3. @2 打印 @2 输出2
4. @1 读取 @1 = 3;
5. @2 读取 @2 = 4;
6. @2 打印 @2 输出4
*/
复制代码
作者:
李征
时间:
2013-5-26 13:47
谢谢楼上的亲们,我懂了
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2