使用 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
提交
取消