黑马程序员技术交流社区

标题: 字节输入输出流问题,有一点地方不理解 [打印本页]

作者: 江楠大盗    时间: 2016-9-8 18:34
标题: 字节输入输出流问题,有一点地方不理解

代码如图,最基本的字节输入输出,aaa.txt中是   你好吗?   ,我不理解的是字节输入输出都是一个字节读取,一个字节写入,而汉字都是两个字节的,为什么写入到bbb.txt中还是汉字而不是乱码?我知道我很水,诚心提问


作者: 孙洪勇    时间: 2016-9-8 19:04
会自动组合拼接吧
作者: HARRY_yFd0S    时间: 2016-9-8 19:50
因为你相当于把源文件复制了一份啊
作者: 江楠大盗    时间: 2016-9-8 23:32
HARRY_yFd0S 发表于 2016-9-8 19:50
因为你相当于把源文件复制了一份啊

复制也是一个字符一个字符的写入,汉字都是两个字符的,分开写入就不是那个字了
作者: kangnam    时间: 2016-9-8 23:51
因为汉字是两个字节的,当它读到第一个字节的时候(一个汉字的半个字节为负),会等待下一个字节的读取,再去编码表里找相对应的汉字
作者: yuanxianzhi    时间: 2016-9-8 23:58
编译器编码和txt编码一样的
作者: 江楠大盗    时间: 2016-9-9 08:44
kangnam 发表于 2016-9-8 23:51
因为汉字是两个字节的,当它读到第一个字节的时候(一个汉字的半个字节为负),会等待下一个字节的读取,再 ...

这个我也想到过,但是定义小数组的时候比如byte[] arr = new byte[3],三个三个取,它就是乱码,为什么这个就不等下一个了
作者: kangnam    时间: 2016-9-9 22:01
江楠大盗 发表于 2016-9-9 08:44
这个我也想到过,但是定义小数组的时候比如byte[] arr = new byte[3],三个三个取,它就是乱码,为什么这 ...

这是你定义每次读这么多,没标点符号这个你定义为偶数就可以了。字节流读汉字是不方便,你用字符流就好了




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