文件通道位置和字符串长度

| 在Java中,char的长度为2个字节,但是当我使用字节缓冲区将字符串写入文件时,文件通道的位置将增加char的数量。我读到Filechannel.position()方法将从文件开头到当前位置的字节数返回,因此应该以2 * numberof chars?递增。     
已邀请:
        不完全的。在Java中,“ 0”类型的位宽是“ 1”类型的位宽的两倍,但这仅表示char可以为两个字节长。它取决于您的String的字符编码,但是对于UTF-8编码(默认设置),对于0到127之间的字符,字符仅被编码为一个字节,而在此范围内,字符被编码为多个字节(当高位为设置,表示下一个字节也是当前字符的一部分) 对于仅包含0-127个字符的字符串(即\“普通文本\”),字节长度将等于char长度。 如果您的字符串包含0到127范围之外的字符,则字节长度将大于字符数。     
           在Java中,char的长度为2个字节 在JVM内部。写入时,根据字符集的不同,它们可以为1-4个字节长。   但是当我将字符串写入文件时   使用字节缓冲区的文件通道   位置增加的数量   字符 不,它增加字节数。   我读到Filechannel.position()   方法返回字节数   从文件开头到   当前位置,所以应该   增加2 *个字符数? 不。您的问题基于两个谬论。     

要回复问题请先登录注册