黑马程序员技术交流社区

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

作者: 何丛    时间: 2013-9-29 19:58
标题: io流问题
                        Java中char类型占用两个字节,为什么new FileReader("demo.txt").write('a');文件只有一个字节?


作者: 梁贺    时间: 2013-9-29 20:31
write方法内部封装了。
两个字节是16位,而此write方法只取16位中的低八位。
所以只有一个字节。
比如你写write(5);你写的是int型的,但是它也只取后8位,即一个字节。
这才有了DataOutputStream  DataInputStream 这些直接操作基本类型的流,他们不会截取数据,其中的方法writeInt,writeChar,
readInt,readChar可以方便操作原数据,而不是经过处理后的数据。
希望可以帮助你~
作者: 陈钦涛    时间: 2013-10-2 00:54
楼主貌似不小心把FileWriter写成FileReader了,FileWirter字符写入流中write方法重载中有一个接受的是int类型的参数,32位。不过这样的话你以char类型字符写入,虚拟机会截取后面的十六位,即两个字节写入流中,文件写入怎么会是一个字节呢?
还是说楼主想表示的是FileOutputStream字节输出流?里面的write重载方法中是有一个是write(int b),接受的是int类型,写入的却是低八位的。





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