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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. ------<a  target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
复制代码


IO流FileInputstream的read()方法读取的是一个字节,为什么返回是int,而不是byte?
For example
read()一次读取一个字节

                FileInputStream fis = new FileInputStream("aaa.txt");        //创建一个文件输入流对象,并关联aaa.txt
                int b;                                                                                                        //定义变量,记录每次读到的字节
                while((b = fis.read()) != -1) {                                                        //将每次读到的字节赋值给b并判断是否是-1
                        System.out.println(b);                                                                //打印每一个字节
                }
               
                fis.close();                                                                                        //关闭流释放资源

read()方法读取的是一个字节,为什么返回是int,而不是byte?

因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111
                那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上
                24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型

2 个回复

倒序浏览
说的很详细,赞一个
回复 使用道具 举报
谢谢。也就随便写点,希望大家一起学习,一起进步
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马