将 Java 字节数组的一部分附加到 StringBuilder

如何将字节数组的一部分附加到 Java 下的对象?我有一个函数的片段,它从输入流读取到字节数组中。然后,我想将我读到的任何内容附加到StringBuilder对象中: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
 }

答案 1

您不应为此使用 a,因为这可能会导致可变宽度编码的编码错误。您可以改用 ,并在读取完所有数据后将其转换为字符串:StringBuilderjava.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


答案 2

您可以从缓冲区中创建一个字符串:

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

然后,如果需要,可以将其附加到StringBuilder。


推荐