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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 何丛 中级黑马   /  2013-9-29 19:58  /  1556 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

                        Java中char类型占用两个字节,为什么new FileReader("demo.txt").write('a');文件只有一个字节?

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

2 个回复

倒序浏览
write方法内部封装了。
两个字节是16位,而此write方法只取16位中的低八位。
所以只有一个字节。
比如你写write(5);你写的是int型的,但是它也只取后8位,即一个字节。
这才有了DataOutputStream  DataInputStream 这些直接操作基本类型的流,他们不会截取数据,其中的方法writeInt,writeChar,
readInt,readChar可以方便操作原数据,而不是经过处理后的数据。
希望可以帮助你~

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报 1 0
楼主貌似不小心把FileWriter写成FileReader了,FileWirter字符写入流中write方法重载中有一个接受的是int类型的参数,32位。不过这样的话你以char类型字符写入,虚拟机会截取后面的十六位,即两个字节写入流中,文件写入怎么会是一个字节呢?
还是说楼主想表示的是FileOutputStream字节输出流?里面的write重载方法中是有一个是write(int b),接受的是int类型,写入的却是低八位的。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

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