黑马程序员技术交流社区

标题: 关于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

  1. import java.io.*;
  2. class  Demo
  3. {
  4. public static void main(String[] args) throws IOException
  5. {
  6.   FileReader f = new FileReader("d:\\1.txt");
  7.   BufferedReader buf = new BufferedReader(f);
  8.   //String s = null;
  9.   while((buf.readLine())!=null)//***********@1
  10.   //while((s = buf.readLine())!=null)
  11.   {
  12.    System.out.println(buf.readLine());//*************@2
  13.    //System.out.println(s);

  14.   }
  15.    buf.close();
  16. }
  17. }

  18. /*
  19. 这个程序没有加 String s 的操作流程是
  20. 1. @1 读取        @1 = 1;
  21. 2. @2 读取        @2 = 2;
  22. 3. @2 打印        @2 输出2
  23. 4. @1 读取        @1 = 3;
  24. 5. @2 读取        @2 = 4;
  25. 6. @2 打印        @2 输出4
  26. */
复制代码

作者: 李征    时间: 2013-5-26 13:47
谢谢楼上的亲们,我懂了




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2