如何追加CharStreams?

时间:2012-11-05 21:53:25

标签: java guava

当我使用对象OutputSupplier时,正确执行添加第一行(CharStreams.write)。但是再次调用CharStreams.write会抛出IOException

这是对象的正确行为吗?如果是这样,如何在不关闭内联流的情况下将String附加到供应商对象?

...

final Process process = Runtime.getRuntime().exec("su");

OutputSupplier<OutputStreamWriter> writerSupplier = CharStreams.newWriterSupplier(new OutputSupplier<OutputStream>() {
    @Override
    public OutputStream getOutput() throws IOException {
        return process.getOutputStream();
    }
}, Charsets.UTF_8);
// ok
CharStreams.write(someCommand, writerSupplier);
...
// IOException
CharStreams.write(otherCommand, writerSupplier);

1 个答案:

答案 0 :(得分:1)

这绝对是预期的行为。

带有CharStreams.write

OutputSupplier打开输出流,写入并关闭它。这就是重点。据推测,Process.getOutputStream()不允许您多次打开和关闭。

要么立即执行所有写操作,要么更有可能不使用CharStreams.write并自行处理关闭流。