gpt4 book ai didi

java - ObjectOutputStream 方法 : writeBytes(String str) vs writeUTF(String s);

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:55 31 4
gpt4 key购买 nike

两者的主要区别是什么?

仍然两者都是用于编写字符串。

public void writeUTF(String str)
throws IOException

Primitive data write of this String in modified UTF-8 format.

对比

public void writeBytes(String str)
throws IOException

Writes a String as a sequence of bytes.

我什么时候应该使用一个而不是另一个?

最佳答案

它在文档中... 来自 DataOutput.writeBytes(String) :

Writes a string to the output stream. For every character in the string s, taken in order, one byte is written to the output stream. If s is null, a NullPointerException is thrown.

If s.length is zero, then no bytes are written. Otherwise, the character s[0] is written first, then s1, and so on; the last character written is s[s.length-1]. For each character, one byte is written, the low-order byte, in exactly the manner of the writeByte method . The high-order eight bits of each character in the string are ignored.

换句话说,“Sod Unicode,我们不关心任何不在 ISO-8859-1 中的字符。哦,我们假设您也不关心字符串的长度。”

请注意,writeBytes 甚至不会尝试检测 数据损坏 - 如果您写出一个不在 ISO-8859-1 中的字符,它只会静默丢弃高字节。

直接说不 - writeUTF 是您的 friend ...假设您的字符串长度小于 64K。

当然,如果您有一个您正在尝试实现的协议(protocol),它本身需要单字节编码(ISO-8859-1 或 ASCII)并且不使用长度,那么 writeBytes 可能 是合适的 - 但我个人可能会自己执行文本到字节的转换,然后使用 write(byte[]) 来代替......它更清晰。

关于java - ObjectOutputStream 方法 : writeBytes(String str) vs writeUTF(String s);,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17996335/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com