2011-10-14 11 views
10

¿Cómo puedo convertir un entero devuelto por read() en un BufferedReader en el valor real del carácter y luego añálo a una cadena? El read() devuelve el número entero que representa la lectura del carácter. Cómo cuando hago esto, no agrega el carácter real en la Cadena. En cambio, agrega la representación entera a la Cadena.Obteniendo el carácter devuelto por read() en BufferedReader

int c; 
String result = ""; 

while ((c = bufferedReader.read()) != -1) { 
    //Since c is an integer, how can I get the value read by incoming.read() from here? 
    response += c; //This appends the integer read from incoming.read() to the String. I wanted the character read, not the integer representation 
} 

¿Qué debo hacer para obtener la información real?

Respuesta

18

Acaba de emitir c a un char.

Además, nunca use += en un String en un bucle. Es O (n^2), en lugar de O (n) esperado. Use StringBuilder o StringBuffer en su lugar.

int c; 
StringBuilder response= new StringBuilder(); 

while ((c = bufferedReader.read()) != -1) { 
    //Since c is an integer, cast it to a char. If it isn't -1, it will be in the correct range of char. 
    response.append((char)c) ; 
} 
String result = response.toString(); 
+0

Gracias por la respuesta muy clara! – Fattie

+1

@JoeBlow Gracias por el amable comentario. En cuanto a su edición, siento que el cierre del lector es responsabilidad de quien creó al lector. Como no vemos la creación del lector, cerrarlo no es apropiado aquí, y más allá del alcance de la respuesta ... – ILMTitan

3

echarlo a un char primera:

response += (char) c; 

también (no relacionada con su pregunta), en ese ejemplo particular se debe utilizar un StringBuilder, no una cadena.

5

también se puede leer en un char buffer

char[] buff = new char[1024]; 
int read; 
StringBuilder response= new StringBuilder(); 
while((read = bufferedReader.read(buff)) != -1) { 

    response.append(buff,0,read) ; 
} 

esto será más eficiente que la lectura de carbón por carbón

+1

¿Qué es la "c"? –

Cuestiones relacionadas