Getting the character returned by read() in BufferedReader
How can I convert an integer returned by the read()
in a BufferedReader
to the actual character value and then append it to a String? The read()
returns the integer that represents the character read. How when I do this, it doesn't append the actual character into the String. Instead, it appends the integer representation itself to the String.
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开发者_如何学Python read from incoming.read() to the String. I wanted the character read, not the integer representation
}
What should I do to get the actual data read?
Just cast c
to a char
.
Also, don't ever use +=
on a String
in a loop. It is O(n^2), rather than the expected O(n). Use StringBuilder
or StringBuffer
instead.
int c;
StringBuilder response= new StringBuilder();
while ((c = bufferedReader.read()) != -1) {
// Since c is an integer, cast it to a char.
// If c isn't -1, it will be in the correct range of char.
response.append( (char)c ) ;
}
String result = response.toString();
you could also read it into a char buffer
char[] buff = new char[1024];
int read;
StringBuilder response= new StringBuilder();
while((read = bufferedReader.read(buff)) != -1) {
response.append( buff,0,read ) ;
}
this will be more efficient than reading char per char
Cast it to a char first:
response += (char) c;
Also (unrelated to your question), in that particular example you should use a StringBuilder, not a String.
精彩评论