不,它不等价。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 这样的底层协议。