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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 山水游客 中级黑马   /  2012-7-12 18:14  /  1647 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 孙胜录 于 2012-7-19 14:30 编辑

FileReader fr=new FileReader("D:\\a.txt");int byt=fr.read();System.out.println(byt);read读取的是一个字节,那为什么read返回的是int类型的,而不是byte类型的?

2 个回复

正序浏览
read读取的是字节  返回的却是int  与之对应的write是将接收到的int的最低8位  也就是一个byte数据写入目的
之所以这么做是为了防止读取到连续的11111111这样的数据 而我们read方法读取的结尾标示就是-1这个条件常被我们用来作为循环读写的条件 为了避免出现循环无法继续就出现了这样的解决方案 那就是read读到的字节提升成int  然后写入时候又把int强转成byte
回复 使用道具 举报
api文档说明的很清楚,fr.read()读取的是单个字符,然后用一个int型的整数记录下来,随着read()不断的读取数据,该整数随着不断增长,因为在对应的Writer类中也有个对应的方法write(int x),可以接受的参数类型是int型的,所以只需将read()返回的int型整数传递给write()就可以完成数据的写入。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马