我正在使用以下代码从文件中读取一个子序列:
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))会输出正确的结果,即第一个字符。
abc.txt
的内容是什么? - Jeffrey