我写了一个实用工具方法,将一些小数据从流写入String
。
哪种实现有更高的性能?
String
。要么
String
并将它们连接起来。实施1:
private String fileToString() throw ... {
final byte[] buffer = new byte[bufLen];
int n;
final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
while ((n = fileInputStream.read(buffer)) != -1)
byteArrayOutputStream.write(buffer, 0, n);
return new String(byteArrayOutputStream.toByteArray(), "UTF-8");
}
实施2:
private String fileToString() throw ... {
final byte[] buffer = new byte[bufLen];
int n;
final StringBuilder stringBuilder = new StringBuilder(aProperValue);
while ((n = fileInputStream.read(buffer)) != -1)
stringBuilder.append(new String(buffer, 0, n, "UTF-8"));
return stringBuilder.toString();
}
编辑:
第二个实现不正确!我错了!请参阅下面的答案。
第二个实现是错误的。它在边界不起作用!感谢@JB Nizet和@Andrew Henle。看他们的评论。
最好的方法是使用一些库。我试图自己解决同样的问题,但表现真的很慢。考虑使用CharStreams.toString
库中的Guava
,你会看到用肉眼提高性能。