使用 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 这样的底层协议。
添加回答
举报
0/150
提交
取消