Java写入(str.getBytes())与写入字节(str)
使用DataOutputStream推送字符串时,我通常会执行以下操作:Java写入(str.getBytes())与写入字节(str),java,dataoutputstream,Java,Dataoutputstream,使用DataOutputStream推送字符串时,我通常会执行以下操作: DataOutputStream dout; String str; dout.write(str.getBytes()); 我刚刚遇到了DataOutputStream的writeBytes()方法,我的问题是上述方法是否等同于: dout.writeBytes(str); 如果没有,区别是什么?什么时候应该使用?没有,它不是等效的 用于writeBytes的Javadocs 将字符串作为字节序列写入基础输出流。字符
DataOutputStream dout;
String str;
dout.write(str.getBytes());
我刚刚遇到了DataOutputStream
的writeBytes()
方法,我的问题是上述方法是否等同于:
dout.writeBytes(str);
如果没有,区别是什么?什么时候应该使用?没有,它不是等效的 用于
writeBytes
的Javadocs
将字符串作为字节序列写入基础输出流。字符串中的每个字符都是通过丢弃其高8位按顺序写出的
因此,除了ASCII字符串之外,这不会很好地工作
你应该做什么
dout.write(str.getBytes(characterSet));
// remember to specify the character set, otherwise it become
// platform-dependent and the result non-portable
或
或
请注意,只有最后一个方法也会写入字符串的长度,因此对于其他方法,如果您打算稍后将其读回,则可能需要确切地知道您正在执行的操作
更大的问题是为什么需要直接使用DataOutputStream这样的低级协议
dout.writeChars(str);
dout.writeUTF(str);