FileInputStream.read()返回int类型原因
当我用fileinputstream流读取文件的时候,然后用fileinputstream.read()方法读取文件的时候,当我查看API的时候,发现read()是读取每个字节,然后返回一个int类型,有没有很纳闷,读取的字节,为什么返回一个int呢?
FileInputStream.read()读取一个byte却返回一个int的原因如下:
因为字节输入流可以操作任意类型的文件,比如图片音频等,这些文件底层都是以二进制形式的存储的,如果每次读取都返回byte,有可能在读到中间的时候遇到111111111
那么这11111111是byte类型的-1,我们的程序是遇到-1就会停止不读了,后面的数据就读不到了,所以在读取的时候用int类型接收,如果11111111会在其前面补上
24个0凑足4个字节,那么byte类型的-1就变成int类型的255了这样可以保证整个数据读完,而结束标记的-1就是int类型
FileInputStream.read()返回一个unsigned byte [0 - 255],而java里面没有这个类型,所以用int接收。byte的范围是[-128,127],所以如果read()返回的数在[128,255]的范围内时,则表示负数,即
(byte)128=-128
(byte)129=-127
(byte)255=-1
所以如果read()返回的是byte的话,那就会有负数。而"返回-1意味着结束",这个信息量用byte是无法表达的,所以必须用int。
原文链接:https://blog.csdn.net/zhaomengszu/article/details/54562056
FileInputStream.read()返回int类型原因相关推荐
- getchar返回int类型
#include <stdio.h> /* copy input to output; 2nd version */ main() { int c; c = getchar(); whil ...
- Java返回int型的空值_使用MyBatis查询int类型字段,返回NULL值时报异常的解决方法...
当配置mybatis返回int类型时 select id="getUserIdByName" parameterType="string" resultType ...
- “GetDocument”: 缺少返回类型;假定为返回“int”的成员函数
在编译时出现: 1>正在编译... 1>PreviewDlg.cpp 1>d:\zac\project\vs2008\projects\dipalgorithm\dipalgorit ...
- mysql int和bigdecimal,mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象
用的是Map,List>接收, sql语句中int类型的值做了聚合运算, 满足上述两个条件. java中去取value的值就会变成BigDecimal 类型 经过实测:mybatis 中的sql ...
- Jquery ajax 返回string类型加result.d原因
啥叫异步,啥叫Ajax.咱不谈啥XMLHTTPRequest.通俗讲异步就是前台页面javascript能调用后台方法.这样就达到了无刷新.所谓的Ajax.这里我们讲二种方法 方法一:(微软有自带Aj ...
- mal是什么类型对应的java类型是什么,【Java】mysql的 int 类型,刨析返回类型为BigDicemal 类型的奇怪现象...
用的是Map,List>接收, sql语句中int类型的值做了聚合运算, 满足上述两个条件. java中去取value的值就会变成BigDecimal 类型 经过实测:mybatis 中的sql ...
- c语言int超出范围字符串,Go返回int64类型字段超出javascript Number范围的解决方法...
Go返回int64类型字段超出javascript Number范围的解决方法 最近在项目中,一个go服务给前端提供了一个接口,返回json格式数据,其中Int64字段会超出javascript Nu ...
- Java byte类型转换成int类型时需要 0XFF的原因
Java byte类型转换成int类型时需要 & 0XFF的原因 假设有byte b = -1; 那么b的二进制是:1111 1111. 如果将b直接转换为int类型,那么二进制是 1111 ...
- println()函数输出int类型返回值错误的问题
out.println(); 在用这个语句输出其他类返回大的int类型的数据的时候,注意输出错误. 例如: out.println(class1.方法()): 导致错误: our.println(c ...
- FTPClient.storeFile返回false的原因
FTPClient.storeFile()返回false的原因 Debug搞了一晚上,什么都看过了,最后总算是自己茅塞顿开发现了问题. FTPClient会返回false的原因有很多, 首先有编码错误 ...
最新文章
- 单例模式(Singleton)
- 使用ST05 研究product extension field deletion
- 60、date的使用
- 数列极差(信息学奥赛一本通-T1427)
- 鸿蒙系统对小米的影响,“小米用鸿蒙系统”乌龙会对后续有影响吗
- fastJson工具类
- 数学式子中arg min,arg max的含义
- 微信公众平台客户端调试工具
- SyntaxError: unexpected EOF while parsing成功解决
- python中win32api_Python win32api.SetCursorPos方法代码示例
- 标准音阶及常用乐器频率范围对照表(完全版)
- .bat文件创建和编辑方法
- 360安全卫士添加信任区
- http url转义字符,特殊字符
- TCP长连接及连接管理
- 使用 lxml 中的 xpath 高效提取文本与标签属性值
- 下载vimeo视频_使用Vimeo的API和Slim构建基本的视频搜索应用
- 小数分频器vhdl实现_基于FPGA的小数分频器的设计与实现.doc
- 【历史上的今天】8 月 4 日:第一位图灵奖女性得主;NVIDIA 收购 MediaQ;首届网络安全挑战大赛完成
- AD18中高速信号等长线使用