web-dev-qa-db-ja.com

BufferedReaderのread()によって返される文字を取得する

BufferedReaderread()によって返される整数を実際の文字値に変換し、それを文字列に追加するにはどうすればよいですか? 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
}

実際のデータを読み取るにはどうすればよいですか?

10
Carven

ccharにキャストするだけです。

また、ループ内のString+=を使用しないでください。予想されるO(n)ではなく、O(n ^ 2)です。代わりに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();
21
ILMTitan

それをcharバッファに読み込むこともできます

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

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

これは、文字ごとに文字を読み取るよりも効率的です

5
ratchet freak

最初にそれをcharにキャストします:

response += (char) c;

また(質問とは関係ありません)、その特定の例では、StringではなくStringBuilderを使用する必要があります。

4