Подтвердить что ты не робот

Получение символа, возвращаемого 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
}

Что мне делать, чтобы прочитать фактические данные?

4b9b3361

Ответ 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, а не строку.