2012-08-01 123 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);