黑马程序员技术交流社区

标题: IO流问题 [打印本页]

作者: ithmC4    时间: 2014-3-28 16:25
标题: IO流问题
字节流中FileInputStream这个类有个方法:
int read();
这个方法一次只读取一个byte 但是返回是int 这样不是增加了3个字节吗?
文件不会越读越大么
作者: 霍振鹏    时间: 2014-3-28 16:40
看看这个图片就理解了,你在写的时候,它内部把int强转成了byte,然后是用一个只能存放一个字节的字节数组来存放这个int的,所以就不好出现你所担心的问题啊。

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

as.png

作者: 黄晓鑫    时间: 2014-3-28 17:03
这个是因为涉及到编码 但是数据是不会越读越大的
作者: H-Deka    时间: 2014-3-28 17:05
同上图,read()方法返回的是只是作为临时值存在数组中,当存放数据时并不是按照int存放的,
作者: ╰青青子佩ˊゝ    时间: 2014-3-28 19:31
返回的int类型数值(这里定义为num)不是由取出的字符转换类型而来,num是你要取出的这个字符在ASCII码对照表中的编码值,通过(char)num来将这个编码值转换成对应的字符,即你要取出的字符。
作者: 你好!默默    时间: 2014-3-28 22:02
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.                 }
复制代码





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