我正在使用以下代码从文件读取子序列。CharBuffer上的Java NIO问题
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 2012-04-28 16:22:09
@Jeffrey,“011000111 ......”系列0/1位。 – Arpssss 2012-04-28 16:23:15
@Jeffrey,额外的东西,当我添加System.out.println(缓冲区)它给出输出,“java.nio.DirectByteBufferR [pos = 0 lim = 16 cap = 16]” – Arpssss 2012-04-28 16:26:36