21

StringBuilderJavaでバイト配列の一部をオブジェクトに追加するにはどうすればよいですか?InputStreamからバイト配列に読み取る関数のセグメントがあります。次に、読み取ったものをStringBuilderオブジェクトに追加します。

byte[] buffer = new byte[4096];
InputStream is;
//
//some setup code
//
while (is.available() > 0)
{
   int len = is.read(buffer);
   //I want to append buffer[0] to buffer[len] into StringBuilder at this point
 }
4

3 に答える 3

28

StringBuilderこれには、可変幅エンコーディングのエンコーディングエラーが発生する可能性があるため、を使用しないでください。代わりに使用してjava.io.ByteArrayOutputStream、すべてのデータが読み取られたら文字列に変換できます。

byte[] buffer = new byte[4096];
ByteArrayOutputStream out = new ByteArrayOutputStream();
InputStream is;
//
//some setup code
//
while (is.available() > 0) {
   int len = is.read(buffer);
   out.write(buffer, 0, len);
}
String result = out.toString("UTF-8"); // for instance

エンコーディングにマルチバイトシーケンスが含まれていないことがわかっている場合(たとえば、ASCIIデータを使用している場合)、aを使用するStringBuilderと機能します。

于 2013-04-11T13:46:48.600 に答える
17

バッファから文字列を作成するだけです。

String s = new String(buffer, 0, len);

次に、必要に応じて、StringBuilderに追加するだけです。

于 2011-02-09T23:05:34.090 に答える
-2

以下のようなものがあなたのためにトリックをするはずです。

byte[] buffer = new byte[3];
buffer[0] = 'a';
buffer[1] = 'b';
buffer[2] = 'c';
StringBuilder sb = new StringBuilder(new String(buffer,0,buffer.length-1));
System.out.println("buffer has:"+sb.toString()); //prints ab
于 2011-02-09T23:09:14.787 に答える