为了账号安全,请及时绑定邮箱和手机立即绑定

DataOutputStream.readUTF()是如何确定读多少字节的?

DataOutputStream.readUTF()是如何确定读多少字节的?

咖喱炒饭 2017-04-19 15:39:04
问题是在学Java的DataOutputStream/DataInputStream时想到的String fileName = "dos.dat"; DataOutputStream dos = new DataOutputStream(new FileOutputStream(fileName)); DataInputStream dis  = new DataInputStream(new FileInputStream(fileName));   //分别以utf-8和utf-16be编码的方式写入两个"中国" dos.writeUTF("中国"); dos.writeChars("中国");   //打印readUTF()读到的字符串 String s = dis.readUTF(); System.out.println(s);文件传输基础——Java IO流 4-4课程中,老师演示的输出结果只打印了一个"中国"疑问:文件就是字节排列,utf-8编码中,中文占3个字节;utf-16be编码中,中文占2个字节readUTF()方法是如何确定要读几个字节的呢?比如说,假若字节排列为11 22 33 44 55 66 77 88 99 0011 22 33组成utf-8的'中'44 55 66组成utf-8的'国'77 88组成utf-16be的'中'99 00组成utf-16be的"国"然而77 88 99也可组成utf-8的'不知是什么的中文'、或77组成'不知是什么的英文'那么在将字节转为字符串的时候,read()方法是如何做到将中文对应的字节转为中文,而不是转为2个字母将非utf-8编码的字节比如utf-16be的字节排除,或停止,而不是继续读出来?底层代码花了很长世间却实在是看不懂,求大神解答感谢。
查看完整描述

1 回答

?
慕盖茨1161855

TA贡献3条经验 获得超0个赞

貌似操作写入读取都是标配的cp,你前边有写入的utf8,换其他它就读不出,
查看完整回答
反对 回复 2017-04-19
  • 1 回答
  • 0 关注
  • 1608 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信