2012-08-01 122 views

回答

3

的asCharBuffer不裹char[]所以你不能获得其array()

看来你正在尝试做的是。

System.out.println(Arrays.toString("test\n".toCharArray())); 
+0

其实我读FileChannel用字节缓冲区(确切地知道它是文本文件),并想从字节缓冲区CharBuffer的有。如果我做不到,那么该方法的理由是什么?第二个问题是如何以正确的方式做到这一点?谢谢。 – user1568898 2012-08-01 15:05:40

+0

当你构建一个CharBuffer,它是一个'char []'的包装器时,你可以使用'array()'来获得你创建缓冲区的原始数组。 – 2012-08-01 15:07:10

+0

就像http://stackoverflow.com/questions/5936275/fast-bytebuffer-to-charbuffer-or-char? – 2012-08-01 15:08:27

2

您是否阅读过Javadoc的CharBuffer.array()

并非所有的CharBuffer都支持char[]ByteBuffer.asCharBuffer()ByteBuffer作为CharBuffer返回查看,因此其结果由byte[]支持。

array()只返回char[]实际支持缓冲区,如果不存在,它会抛出一个UOE。你就可以得到的最接近的替代产品是一样的东西

char[] result = new char[charBuf.remaining()]; 
charBuf.get(result);