Получение символа, возвращаемого read() в BufferedReader
Как преобразовать целое число, возвращаемое read()
в BufferedReader
, в значение фактического символа, а затем добавить его в строку? read()
возвращает целое число, которое представляет прочитанный символ. Как это сделать, он не добавляет фактический символ в строку. Вместо этого он добавляет целочисленное представление к 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 read from incoming.read() to the String. I wanted the character read, not the integer representation
}
Что мне делать, чтобы прочитать фактические данные?
Ответы
Ответ 1
Просто нажмите c
на char
.
Кроме того, никогда не используйте +=
в String
в цикле. Это O (n ^ 2), а не ожидаемое O (n). Вместо этого используйте StringBuilder
или StringBuffer
.
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();
Ответ 2
вы также можете прочитать его в буфере char
char[] buff = new char[1024];
int read;
StringBuilder response= new StringBuilder();
while((read = bufferedReader.read(buff)) != -1) {
response.append( buff,0,read ) ;
}
это будет более эффективно, чем чтение char за char
Ответ 3
Сначала передайте его char:
response += (char) c;
Также (не связанный с вашим вопросом), в этом конкретном примере вы должны использовать StringBuilder, а не строку.