1

在 Java 中,字符长 2 个字节,但是当我使用字节缓冲区将字符串写入文件时,文件通道位置会增加字符数。我读到 Filechannel.position() 方法返回从文件开头到当前位置的字节数,所以它应该增加 2*numberof chars 吗?

4

2 回答 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 回答