3

テキストファイルを読み取ることができる単純なアプリケーションを 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 ビットはこの文字の 2 番目の部分であると仮定します。たとえば、この文字「#」が現在インデックス i および i + 1 にあるかどうかを調べる必要がある場合、次のようにできますか?? (バイナリ表現の「#」: 0010 0011):

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

返信ありがとう

4

1 に答える 1

6

簡単な答えは、テキスト データをバイト ストリームとして扱うべきではないということです。具体的には、使用しないでくださいByteBuffer

InputStreamReader指定されたエンコーディングを使用してバイトのシーケンスを解釈する方法を知っている を使用します。

于 2012-12-11T20:21:03.250 に答える