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

Java write(str.getBytes()) 与 writeBytes(str)

Java write(str.getBytes()) 与 writeBytes(str)

开心每一天1111 2022-12-28 13:56:10
使用 DataOutputStream 推送字符串时,我通常会执行以下操作:DataOutputStream dout;String str;dout.write(str.getBytes());我刚刚遇到 的writeBytes()方法DataOutputStream,我的问题是上面是否等同于:dout.writeBytes(str);如果不是,有什么区别,什么时候应该使用?
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

不,它不等价。


JavadocswriteBytes说


将字符串作为字节序列写出到底层输出流。字符串中的每个字符通过丢弃其高八位按顺序写出。


因此,除了 ASCII 字符串外,这将无法正常工作。


你应该做的


dout.write(str.getBytes(characterSet));

// remember to specify the character set, otherwise it become 

// platform-dependent and the result non-portable

要么


dout.writeChars(str);

要么


dout.writeUTF(str);

请注意,只有最后一个方法还写入字符串的长度,因此对于其他方法,如果您打算稍后读回它,您可能需要确切地知道您在做什么。


更大的问题是为什么你需要直接使用像 DataOutputStream 这样的底层协议。


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 101 浏览

添加回答

举报

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