BufferedReader
のread()
によって返される整数を実際の文字値に変換し、それを文字列に追加するにはどうすればよいですか? 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
}
実際のデータを読み取るにはどうすればよいですか?
c
をchar
にキャストするだけです。
また、ループ内の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();
それをcharバッファに読み込むこともできます
char[] buff = new char[1024];
int read;
StringBuilder response= new StringBuilder();
while((read = bufferedReader.read(buff)) != -1) {
response.append( buff,0,read ) ;
}
これは、文字ごとに文字を読み取るよりも効率的です
最初にそれをcharにキャストします:
response += (char) c;
また(質問とは関係ありません)、その特定の例では、StringではなくStringBuilderを使用する必要があります。