DataOutputStream:“编码字符串太长”限制的目的
2022-09-03 14:17:17
方法中有一个奇怪的限制,它将UTF-8编码字符串的大小限制为字节:java.io.DataOutputStream.writeUTF(String str)
65535
if (utflen > 65535)
throw new UTFDataFormatException(
"encoded string too long: " + utflen + " bytes");
这很奇怪,因为:
- 在此方法的 JavaDoc 中没有关于此限制的任何信息
- 通过复制和修改此类的内部方法,可以轻松解决此限制
static int writeUTF(String str, DataOutput out)
- 相反的方法中没有这样的限制。
java.io.DataInputStream.readUTF()
根据上述情况,我无法理解在方法上进行这种限制的目的。我错过了什么或误解了什么?writeUTF