A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 狼牙 中级黑马   /  2013-7-27 07:27  /  1791 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么FileReader对象只能使用一次,当第二次使用时,就会出现问题(问题是第二次无法正常输出,文件内容全部为中文)?
我写的是这样的一段代码:我的思路是两个方法共用一个FileReader对象,用法不同的读取方法把文件中的中文数据输出打印。
可是,当我把任意一个方法注释掉后都可以正常运行,当两个方法同时使用时就会出现问题,第二个方法无法正常输出;
我在想为什么数据库连接对象就可以共用,为什么FileReader对象不可以共用?路过的大神们请留言相告!先谢谢各位!!
  System.out.println("方法一:");
  FileReader f=new FileReader("D:\\IO.txt");
  int ch=0;
  while((ch=f.read())!=-1)
  {
   System.out.print((char)ch);
  }
  System.out.println("\r\n\r\n方法二:");
  char[] buf=new char[5];
  int num=0;
  while((num=f.read(buf))!=-1)
  {
   System.out.print(new String(buf,0,num));
  }
  f.close();

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 淡定

查看全部评分

3 个回复

正序浏览
luckwei 发表于 2013-7-27 17:38
两种方法同时调用时,第一个方法运行完了之后,把文件读取完后,FileReader对象的指针就指向了文件的末尾, ...

原来如此!受教啦!
回复 使用道具 举报
两种方法同时调用时,第一个方法运行完了之后,把文件读取完后,FileReader对象的指针就指向了文件的末尾,在用read()方法时,就没有 程序可读了,就只打印出       方法二:没有内容

评分

参与人数 1技术分 +1 收起 理由
神之梦 + 1 赞一个!

查看全部评分

回复 使用道具 举报
我认为在读取文件的时候有一个指针指向流读取的位置,当你第一次已经读取完成后,指针已经指向了文件末尾,那肯定就读不到文件了
回复 使用道具 举报 1 0
您需要登录后才可以回帖 登录 | 加入黑马