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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马肖凯骏 中级黑马   /  2012-3-11 21:27  /  1647 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

为什么read()方法返回值改成int之后,用write写的文件不是原文件的四倍大小

毕老师说读一个字节没错
0000-0000 0000-0000 0000-0000 1111-1111
那为什么write写的不是从第一个byte 0000-0000 开始写的,而是从第四个1111-1111

一个int类型不是等于4个字节吗?

难道读取就是从低八位开始的?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

2 个回复

倒序浏览
输出流的write方法虽然接收是一个整数,四个字节,但是write只将最后一个字节写出。其他字节抛弃。

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

回复 使用道具 举报
read()读取的是字节,8位,也就有可能出现1111-1111的情况,所以向上转型变成4字节的int型,
在之前补0,0000-0000 0000-0000 0000-0000 1111-1111,这样读出的数据就不可能与-1判断标志相同。
write()是将指定的字节写出,写出去的时候传进来的是个int数据,但是他也在做着操作,将int数据的前3个字节砍掉,只写最后一个字节,这是一个强制转换

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1

查看全部评分

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