我有以下代码:
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/