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

使用 DataOutputStream 推送字符串时,我通常会执行以下操作:


DataOutputStream dout;

String str;

dout.write(str.getBytes());

我刚刚遇到 的writeBytes()方法DataOutputStream,我的问题是上面是否等同于:


dout.writeBytes(str);

如果不是,有什么区别,什么时候应该使用?


开心每一天1111
浏览 102回答 1
1回答

HUWWW

不,它不等价。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 这样的底层协议。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java