2012-01-24 14 views
6

CharBuffer.put() işlevi işleviyle bazı dizeleri koymaya çalışıyorum ancak arabellek boş bırakılmıştır.CharBuffer.put() çalışmadı

kodum:

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

Ben allocate(1000) sonra clear() veya rewind() ile kullanmaya çalıştı ama bu sonuç değişmedi.

cevap

2

Eğer nesneler koymak sonra geri sarmak gerekir, bu

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

sağ döngü sonra rewind() için bir çağrı ekleme deneyin.

3

bu deneyin:

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); 

Kaçırdığınız detay yazma yazılı verilerin sonuna şimdiki taşıdığındaki yani, senin de baskı yaparken yüzden, geçerli işaretçisi başlıyor hiçbir şey yazılmadı.

3

Tampondan okuyabilmeniz için önce flip() arabelleğe ihtiyacınız olacaktır. Arabellek verileri okunmadan önce flip() yönteminin çağrılması gerekir. flip() yöntemi çağrıldığında, sınır geçerli konuma ve pozisyon 0'a ayarlanır.

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); 

Yukarıdakiler, arabellek içindeki yazılmamış alanı değil, yalnızca arabelleklerde karakterleri yazdırır.