方法中有一个奇怪的限制java.io.DataOutputStream.writeUTF(String str)
,它将 UTF-8 编码字符串的大小限制为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
方法中这种限制的目的。我错过或误解了什么?