黑马程序员技术交流社区

标题: BufferedReader中的疑问 [打印本页]

作者: 李万海    时间: 2013-3-26 20:33
标题: BufferedReader中的疑问
本帖最后由 李万海 于 2013-3-26 21:53 编辑
  1. while(true)
  2. {
  3.     BufferedReader bfr= new BufferedReader(new InputStreamReader(System.io));
  4.                         String strLine = bfr.readLine();
  5.     if(strLine != null)
  6.     {
  7.                System.out.println("hi:" + strLine );
  8.     }
  9.     else
  10.     {
  11.                 return;
  12.     }
  13.    bfr.close();
  14. }
复制代码
为什么在这过程中会出现数据丢失的情况?

作者: HM谢文辉    时间: 2013-3-26 21:08
  1. import java.io.*;

  2. class Test121 {
  3.         public static void main(String[] args) {
  4.                 BufferedReader bfr = null;
  5.                 try {
  6.                         while (true) {
  7.                                 bfr = new BufferedReader(new InputStreamReader(System.in));  //此处输入不应改为System.io
  8.                                 String strLine = bfr.readLine();
  9.                                 if (strLine != null) {
  10.                                         System.out.println("hi:" + strLine);
  11.                                 } else {
  12.                                         return;
  13.                                 }
  14.                         }
  15.                 }
  16.                 catch (IOException e) {
  17.                         System.out.println(e.toString());
  18.                 }
  19.                 finally {
  20.                         try {
  21.                                 bfr.close();
  22.                         } catch (IOException e) {
  23.                                 System.out.println("关闭异常");
  24.                         }
  25.                 }

  26.         }
  27. }
复制代码

作者: 刘子义    时间: 2013-3-26 21:17
每次循环都创建一个新的BufferedReader对象是不正确的,应该把第3行代码放到while循环前,再把关闭流的第13行代码放到循环后。
作者: lucy198921    时间: 2013-3-26 21:26
FileReader读取文件的过程中,FileReader继承了InputStreamReader,但并没有实现父类中带字符集参数的构造函数,所以FileReader只能按系统默认的字符集来解码,然后在UTF-8 -> GBK -> UTF-8的过程中编码出现损失,造成数据丢失.
作者: 疯狂程序    时间: 2013-3-26 23:39
使用BufferedReader要注意2点
1.一定要导包java.io.*;
2.一定要抛出异常,所谓异常就是可以预测的错误
你的问题很明显,没有抛异常
作者: 陈丽莉    时间: 2013-3-27 11:52
若还有问题,继续追问; 没有的话,尽量及时将帖子分类改成【已解决】~




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