如果我有一个字节数组(可能来自相当大的文件),哪个更适合构造字符串?
new String(byteArr, UTF_8);
对
try (final ByteArrayInputStream decompressed = new ByteArrayInputStream(byteArr);
final StringWriter stringWriter = new StringWriter()) {
IOUtils.copy(decompressed, stringWriter, UTF_8);
return stringWriter.toString();
} catch(...) {//...}
在这里使用
StringWriter
有什么好处吗?
如果目标是将您已有的表示 UTF-8 文本的字节数组转换为单个
String
,那么 new String(bytes, UTF_8)
无疑是最好、最有效的解决方案。
如果其中任何一个不正确,例如您正在增量读取文件,情况可能会发生变化,但您必须指定情况。
对于小型到中等大小的字节数组,请使用 new String(byteArr, UTF_8) 以实现简单和高效。对于非常大的文件或基于流的处理,请考虑 ByteArrayInputStream 方法,但它更复杂。