我正在执行一个进程并想将其输出读入一个字符串。而不是处理 try/catch/finally,我希望使用 Guava CharStreams.toString(InputSupplier<R> supplier)
.不幸的是,Process 的 getInputStream()
返回的流类型是 InputStream
而不是 InputSupplier。我如何使用它来创建 InputSupplier
用于 t oString()
?
理想情况下我可以做这样的事情:
CharStreams.toString(CharStreams.newReaderSupplier(process.getInputStream()))
但是您不能从 InputStream 构造 InputSupplier,我很难找到如何做到这一点。
最佳答案
我还没有找到用 Guava 做这个的方法。我相信开发商有充分的理由这样做。在保持最小化的同时,我得到的最接近的是:
CharStreams.toString(CharStreams.newReaderSupplier(new InputSupplier<InputStream>() {
@Override
public InputStream getInput() throws IOException {
return inputStream;
}
}, Charsets.UTF_16));
我使用了 CharStreams 中的 newReaderSupplier
,因此您不必用 InputStreamReader
包装它。
关于java - 在 Java 中,如何使用 Google 的 guava CharStreams.toString 进程中的 inputStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7030060/