次のコードを使用して、ファイルからサブシーケンスを読み取ります。
FileChannel channel = new RandomAccessFile("abc.txt", "r").getChannel();
ByteBuffer buffer = channel.map(FileChannel.MapMode.READ_ONLY, 0, channel.size());
CharBuffer cbuf = buffer.asCharBuffer();
String str = cbuf.subSequence(0, 1).toString();
System.out.println("str = " + str);
ただし、これにより「str = ?」という出力が得られます。なぜこれが起こっているのか、これを解決する方法を教えてもらえますか? 申し訳ありませんが、私はNIOの初心者です。
さらに、System.out.println(buffer); を追加すると、「java.nio.DirectByteBufferR[pos=0 lim=16 cap=16]」という出力が得られます。
System.out.println((char)buffer.get(0)) は、最初の文字を意味する適切な出力を提供します。