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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张洪慊 高级黑马   /  2013-4-30 22:32  /  1692 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 张洪慊 于 2013-5-1 15:42 编辑

看下代码:
  1. package filereader;
  2. import java.io.FileReader;
  3. import java.io.IOException;
  4. import static java.lang.System.out;
  5. class FileReaderDemo2{
  6. public static void main(String[] args)throws IOException{
  7. FileReader fr = new FileReader("test.txt");//文件内容a
  8. char[] buf = new char[3];//定义数组长度为3

  9. int num=fr.read(buf);
  10. out.println("num="+num+"..."+new String(buf));

  11. num=fr.read(buf);
  12. out.println("num="+num+"..."+new String(buf));

  13. num=fr.read(buf);
  14. out.println("num="+num+"..."+new String(buf));
  15. System.out.println("over");
  16. }
  17. }
复制代码
但输出结果却是: (我把源文件和test.txt均放在了c:\)

竟然输出了3a??我很郁闷,我在反复检查c:\test.txt内容(我把源文件和test.txt均放在c:\下测试)->确定为一个a
我在考虑是不是因为我的操作系统缘故(windows 7 64bit 旗舰版)
于是我把java源文件和test.txt拷到XP系统/windows 7 32bit下测试:

一个a,正常结果.
我在用U盘把JDK和源文件拷到同学机器上(和我一样操作系统)运行,3a…..郁闷..
这是为什么?


评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

3 个回复

倒序浏览
这个结果应该是对的。read方法读取字符数,如果已到达流的末尾,则返回 -1 ,三次是输出的结果,只有一次num=1,而其他两次都为-1,说明已经达到流的末尾。如果再定义同样的操作的话,还是会输出结果num=-1...a。同时用数组遍历的方法,遍历数组,输出的结果确实是只有一个a元素。

评分

参与人数 1技术分 +1 收起 理由
滔哥 + 1

查看全部评分

回复 使用道具 举报
朱安柱 发表于 2013-4-30 23:13
这个结果应该是对的。read方法读取字符数,如果已到达流的末尾,则返回 -1 ,三次是输出的结果,只有一次nu ...

额,关键我第一次就输出了aaa....何解?
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马