从字节数组中读取两个字节

时间:2012-12-11 20:16:31

标签: java byte

我在Java中创建一个简单的应用程序,它允许我读取文本文件。我有一个包含在ByteBuffer中的字节数组:

 FileInputStream inputStream = new FileInputStream(name);
 FileChannel channel = inputStream.getChannel();
 byte[] bArray = new byte[8192];
 ByteBuffer byteBuffer = ByteBuffer.wrap(bArray);
 int read;

然后我使用while循环来浏览文本文件:

while ( (read=channel.read(byteBuffer)) != -1 )
{
    for ( int i=0; i<read; i++ )
        //my code
    byteBuffer.clear( );
}

我的问题是如何在这种情况下读取Unicode字符。 Unicode字符由2个字节(16位)组成,因此我认为bArray [i]保存第一个(更高)8位,随后的8位是该字符的第二部分。所以,例如,如果我需要找出这个字符:“#”当前是否在索引i和i + 1上,我可以这样做吗? (二进制表示中的“#”:0010 0011):

if (bArray[i] == (byte)10 && bArray[i+1] == (byte) 11)

感谢回复

1 个答案:

答案 0 :(得分:6)

简单的答案是,您不应将文本数据视为字节流。具体而言,这意味着:不要使用ByteBuffer

使用InputStreamReader,它知道如何使用给定的编码来解释字节序列。