如何解决文件通道位置和字符串长度
| 在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 *个字符数?
不。您的问题基于两个谬论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。