我有以下代码:

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int size = 4096;
byte[] bytes = new byte[size];

while (is.read(bytes, 0, size) != -1)
{
    baos.write(bytes);
    baos.flush();
}


当我做:

String s = baos.toString();


我将\u0000 -s附加到字符串中。因此,如果我的字符数据仅占Y的X字节,则Y-Z将被预填充\u0000,从而无法检查equals。我在这里做错了什么?在这种情况下,应如何将字节转换为String

提前谢谢了!

最佳答案

每次遍历循环时,您只应写入与读取的一样多的数据:

ByteArrayOutputStream baos = new ByteArrayOutputStream();

int size;
byte[] bytes = new byte[4096];

while (size = is.read(bytes, 0, bytes.length) != -1)
{
    baos.write(bytes, 0, size);
}
baos.flush();
String s = baos.toString();


您可能会考虑指定特定的字符集,以将字节转换为String。 no-arg toString()方法使用平台默认编码。

关于java - ByteArrayOutputStream.toString()生成额外的字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19473725/

10-13 03:01