java - 在 Java 中,如何使用 Google 的 guava CharStreams.toString 进程中的 inputStream?

标签 java process inputstream guava

我正在执行一个进程并想将其输出读入一个字符串。而不是处理 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/

相关文章:

android - 将密码输入流转换为字节数组?

java - 给定多个可以旋转的矩形,找到一个最小面积的外接矩形

linux - 如何在 Linux 中不同进程的全屏应用程序顶部弹出 GTK 窗口/小部件?

c# - 创建子进程 C# win32 API

Java:合并 InputStreams

java - 比较输入流的快速方法

java - 为什么 Java 应用程序在 Windows XP 32 和 Windows 7 64 中的内存使用有如此大的差异

java - 堆重载JVM

java - JPype 不能在线程内工作?

linux - PostgreSQL unix进程详解查询