有人可以如此友好地解釋爲什麼在下面的行我有UnsupportedOperationException?UnsupportedOperationException對ByteBuffer.asCharArray()。array()
的System.out.println(ByteBuffer.wrap(新字節[] { 'T', 'E', 'S', 'T', '\ n'})。asCharBuffer()。陣列( ));
有人可以如此友好地解釋爲什麼在下面的行我有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://stackoverflow.com/questions/5936275/fast-bytebuffer-to-charbuffer-or-char? – 2012-08-01 15:08:27