0
我可以用此异常检查空流值:番石榴。 CharStreams检查空
(空=供应商!)
或者我需要检查:
(空= readerSupplier.getInput() )
我应该flush()输出流吗? 查看评论。
公共无效的run(){
try {
final Process process = Runtime.getRuntime().exec("su");
InputSupplier<InputStreamReader> readerSupplier = CharStreams.newReaderSupplier(new InputSupplier<InputStream>() {
@Override
public InputStream getInput() throws IOException {
return process.getInputStream();
}
}, Charsets.UTF_8);
OutputSupplier<OutputStreamWriter> writerSupplier = CharStreams.newWriterSupplier(new OutputSupplier<OutputStream>() {
@Override
public OutputStream getOutput() throws IOException {
return process.getOutputStream();
}
}, Charsets.UTF_8);
// can I check the stream objects for null readerSupplier/writerSupplier?
// or need: readerSupplier.getInput()/writerSupplier.getOutput()?
if (null != readerSupplier && null != writerSupplier) {
...
CharStreams.write(someCommand, writerSupplier);
// should I flush() output stream? How better? Flushables.flush(writerSupplier) or Flushables.flush(writerSupplier.getOutput())
}
感谢您的回复。非常有用的课程。另一个问题:使用“供应商”平台“Android”的设施是否合适?这不是性能问题吗? – Aleksandr
不,在Android上不应该有'供应商'类型的任何性能问题。 –
我会说,我不一定建议使用'Input/OutputSupplier'。通常希望它们每次都可以多次使用以返回一个新的独立流。由于'Process'只有一个流,并且每次调用'getInputStream()'时都会返回相同的流,如果您尝试多次使用供应商,则会遇到问题,因为流将具有已关闭。 – ColinD