UnsupportedOperationException对ByteBuffer.asCharArray()。array()
问题描述:
有人可以如此友好地解释为什么在下面的行我有UnsupportedOperationException?UnsupportedOperationException对ByteBuffer.asCharArray()。array()
的System.out.println(ByteBuffer.wrap(新字节[] { 'T', 'E', 'S', 'T', '\ n'})。asCharBuffer()。阵列( ));
答
的asCharBuffer不裹char[]
所以你不能获得其array()
看来你正在尝试做的是。
System.out.println(Arrays.toString("test\n".toCharArray()));
答
您是否阅读过Javadoc的CharBuffer.array()
?
并非所有的CharBuffer
都支持char[]
。 ByteBuffer.asCharBuffer()
将ByteBuffer
作为CharBuffer
返回查看,因此其结果由byte[]
支持。
array()
只返回char[]
实际支持缓冲区,如果不存在,它会抛出一个UOE。你就可以得到的最接近的替代产品是一样的东西
char[] result = new char[charBuf.remaining()];
charBuf.get(result);
其实我读FileChannel用字节缓冲区(确切地知道它是文本文件),并想从字节缓冲区CharBuffer的有。如果我做不到,那么该方法的理由是什么?第二个问题是如何以正确的方式做到这一点?谢谢。 – user1568898 2012-08-01 15:05:40
当你构建一个CharBuffer,它是一个'char []'的包装器时,你可以使用'array()'来获得你创建缓冲区的原始数组。 – 2012-08-01 15:07:10
就像http://*.com/questions/5936275/fast-bytebuffer-to-charbuffer-or-char? – 2012-08-01 15:08:27