我需要将 Reader 对象转换为 InputStream。我现在的解决方案如下。但我担心的是,由于这将处理大量数据,因此会大大增加内存使用量。
private static InputStream getInputStream(final Reader reader) {
char[] buffer = new char[10240];
StringBuilder builder = new StringBuilder();
int charCount;
try {
while ((charCount = reader.read(buffer, 0, buffer.length)) != -1) {
builder.append(buffer, 0, charCount);
}
reader.close();
} catch (final IOException e) {
e.printStackTrace();
}
return new ByteArrayInputStream(builder.toString().getBytes(StandardCharsets.UTF_8));
}
Run Code Online (Sandbox Code Playgroud)
由于我使用 StringBuilder,这会将读取器对象的全部内容保留在内存中。我想避免这种情况。有没有办法可以通过管道传输 Reader 对象?对此的任何帮助表示高度赞赏。