0

当我使用 objectOutputSupplier时,添加第一行 ( CharStreams.write) 会正确执行。但随后再次调用CharStreams.write会引发IOException.

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

...

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);
4

1 回答 1

1

这绝对是预期的行为。

CharStreams.writewithOutputSupplier打开输出流,写入并关闭它。这是重点的一部分。大概Process.getOutputStream()不会让您多次打开和关闭。

一次完成所有写入,或者更有可能的是,不要自己使用CharStreams.write和处理关闭流。

于 2012-11-05T22:03:51.873 回答