Получение символа, возвращаемого read () в BufferedReader - PullRequest
10 голосов
/ 14 октября 2011

Как я могу преобразовать целое число, возвращаемое read() в BufferedReader, в фактическое значение символа и затем добавить его в строку?read() возвращает целое число, которое представляет прочитанный символ.Как, когда я делаю это, он не добавляет фактический символ в строку.Вместо этого он добавляет само целочисленное представление к строке.

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
}

Что я должен сделать, чтобы получить фактические данные для чтения?

Ответы [ 3 ]

20 голосов
/ 14 октября 2011

Просто приведи 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 c isn't -1, it will be in the correct range of char.
    response.append( (char)c ) ;  
}
String result = response.toString();
5 голосов
/ 14 октября 2011

вы также можете прочитать его в буфер символов

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

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

это будет более эффективно, чем чтение символа на символ

3 голосов
/ 14 октября 2011

Сначала приведите его к символу:

response += (char) c;

Кроме того (в данном случае не имеет отношения к вашему вопросу), вам следует использовать StringBuilder, а не String.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...