在 Java 中,字符长 2 个字节,但是当我使用字节缓冲区将字符串写入文件时,文件通道位置会增加字符数。我读到 Filechannel.position() 方法返回从文件开头到当前位置的字节数,所以它应该增加 2*numberof chars 吗?
问问题
652 次
2 回答
1
在 Java 中,字符长 2 个字节
在 JVM 内部。写出时,根据字符集,它们可以是 1-4 个字节长。
但是当我使用字节缓冲区将字符串写入文件时,文件通道位置会增加字符数。
不,它按字节数递增。
我读到 Filechannel.position() 方法返回从文件开头到当前位置的字节数,所以它应该增加 2*numberof 字符吗?
不,你的问题是建立在两个谬误之上的。
于 2011-06-01T05:21:45.800 回答
-1
不完全的。在 Java 中,char
类型是类型位宽的两倍byte
,但这仅意味着字符可以是两个字节长。这取决于您的字符串的字符编码,但使用 UTF-8 编码(默认值),对于 0 到 127 之间的字符,字符仅编码为一个字节,但对于此范围内的字符,字符编码为多个字节(设置高位时,它表示下一个字节也是当前字符的一部分)
对于仅由 0-127 个字符组成的字符串(即“普通文本”),字节长度将等于字符长度。
如果您的字符串包含 0-127 范围之外的字符,则字节长度将大于字符数。
于 2011-06-01T03:07:08.217 回答