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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ithmC4 中级黑马   /  2014-3-28 16:25  /  997 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

字节流中FileInputStream这个类有个方法:
int read();
这个方法一次只读取一个byte 但是返回是int 这样不是增加了3个字节吗?
文件不会越读越大么

5 个回复

倒序浏览
看看这个图片就理解了,你在写的时候,它内部把int强转成了byte,然后是用一个只能存放一个字节的字节数组来存放这个int的,所以就不好出现你所担心的问题啊。

as.png (7.07 KB, 下载次数: 22)

as.png

评分

参与人数 1技术分 +1 收起 理由
菜小徐 + 1

查看全部评分

回复 使用道具 举报
这个是因为涉及到编码 但是数据是不会越读越大的
回复 使用道具 举报
同上图,read()方法返回的是只是作为临时值存在数组中,当存放数据时并不是按照int存放的,
回复 使用道具 举报
返回的int类型数值(这里定义为num)不是由取出的字符转换类型而来,num是你要取出的这个字符在ASCII码对照表中的编码值,通过(char)num来将这个编码值转换成对应的字符,即你要取出的字符。
回复 使用道具 举报
read只会读取一个字节 不会自动读取下一个 只会读第一个字节 和指针不是一回事
如果想用字节流读完文件 一般用一个字节数组的缓冲区 比如200
  1. byte[] buffer = new byte[200];//创建字节数组
  2.                
  3.                 int length = 0;
  4.                
  5.                 while(-1 != (length = is.read(buffer, 0, buffer.length))){
  6.                         String str = new String(buffer,0,length);
  7.                         System.out.println(str);
  8.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
枫儿 + 1 赞一个!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马