テキストファイルを読み取ることができる単純なアプリケーションを 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)
返信ありがとう