Filechannel位置和字符串长度

时间:2011-06-01 02:58:13

标签: java string-length filechannel

在Java中,字符长度为2个字节,但是当我使用bytebuffer将字符串写入文件时,filechannel位置会增加字符数。我读过Filechannel.position()方法返回从文件开头到当前位置的字节数,所以它会增加2 *个字符数??

2 个答案:

答案 0 :(得分:1)

  

在Java中,字符长度为2个字节

JVM内部。当写出时,它们可以是1-4个字节长,具体取决于字符集。

  

但是当我将一个字符串写入文件时   使用bytebuffer的filechannel   位置增加数量   字符。

不,它增加了字节数。

  

我读到了Filechannel.position()   方法返回字节数   从文件的开头到   当前的位置如此羞涩   增加2 *个字符数?

没有。你的问题基于两个谬论。

答案 1 :(得分:-1)

不完全。在Java中,char类型是byte类型的位宽的两倍,但这仅表示字符可以两个字节长。它取决于你的String的字符编码,但是使用UTF-8编码(默认值),chars被编码为0到127之间的字符只有一个字节,但是在这个范围内的字符多个字节(当设置高位时,它表示下一个字节也是当前char的一部分

对于仅由0-127个字符组成的字符串(即“普通文本”),字节长度将等于字符长度。

如果您的String包含0-127范围之外的字符,则字节长度将大于字符数。