2012-01-24 67 views
6

我試圖把一些字符串放到CharBufferCharBuffer.put()函數 但緩衝區留空。CharBuffer.put()沒有工作

我的代碼:

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
System.out.println(charBuf); 

我試圖allocate(1000)clear()rewind()使用,但並沒有改變結果。

回答

2

你把對象後,必須倒帶,試試這個

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
charBuf.rewind(); 
System.out.println(charBuf); 
3

試試這個:

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
charBuf.rewind(); 
System.out.println(charBuf); 

你錯過的細節,寫作當前指針移動到寫入數據的末端,所以,當你打印出來,它開始在當前指針,它沒有寫任何東西。

3

在從緩衝區讀取數據之前,您需要使用flip()緩衝區。在從緩衝區讀取數據之前,需要調用flip()方法。當調用flip()方法時,限制被設置爲當前位置,並且位置爲0。

CharBuffer charBuf = CharBuffer.allocate(1000); 
for (int i = 0; i < 10; i++) 
{ 
    String text = "testing" + i + "\n"; 
    charBuf.put(text); 
} 
charBuf.flip(); 
System.out.println(charBuf); 

上面將只打印在緩衝器中的字符,而不是在緩衝器中的未寫入的空間。