2012-01-24 8 views
6

Intento poner algunas cadenas en CharBuffer con CharBuffer.put() función pero el buffer se deja en blanco.CharBuffer.put() no funcionó

mi código:

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

me trató de usar con clear() o rewind() después allocate(1000) pero eso no cambió el resultado.

Respuesta

2

Debe rebobinar después de poner los objetos, prueba este

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

añadir una llamada a la derecha rewind()después el bucle.

3

Prueba esto:

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

El detalle que se está perdiendo es que la escritura se mueve el puntero actual hasta el final de los datos escritos, por lo que al imprimir a cabo, se está empezando en el puntero actual , que no tiene nada escrito.

3

Necesitará flip() el búfer antes de poder leer desde el búfer. Es necesario llamar al método flip() antes de leer los datos del búfer. Cuando se llama al método flip(), el límite se establece en la posición actual y la posición en 0. p.

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

Lo anterior sólo imprimirá los caracteres en los tampones y no el espacio no escrita en la memoria intermedia.

Cuestiones relacionadas