Java中是否存在空OutputStream?
我需要为我正在使用的API指定一个OutputStream
,但实际上并不需要输出。 Java有一个OutputStream
等价于> /dev/null
吗?
Java看起来不像Apache Commons IO那样。 看看下面的内容:
https://commons.apache.org/proper/commons-io/javadocs/api-2.5/index.html
希望有所帮助。
/**Writes to nowhere*/ public class NullOutputStream extends OutputStream { @Override public void write(int b) throws IOException { } }
现在还没有提到,所以我还要添加Guava的ByteStreams 。 nullOutputStream() ,因为有些人可能更喜欢Guava,而不是Apache Commons IO,或者已经有了它在他们的项目中。
注意:如果您使用较旧版本的Guava(从1.0到13.0),则需要使用com.google.io.NullOutputStream 。
重新提供已经提供的答案 –
Java没有一个NullOutputStream
类。 你可以推出你自己的OutputStream
,它忽略写入它的任何数据 – 换言之, write(int b)
, write(byte[] b)
和write(byte[] b, int off, int len)
将会有空的方法体。 这是Common IO NullOutputStream
类所做的。
不在标准库AFAIK中,但通过在OutputStream中覆盖写入来创build一个应该不是很困难
不,但实现起来相当简单。
看到这个问题“如何从代码库中删除System.out.println”
然后你只需要:
System.setOut( DevNull.out );
或类似的东西 :)
System.setOut(PrintStream的)
我相信这是你正在寻找的东西,我正在寻找同样的东西:这是为了将输出stream从标准错误redirect到ProcessBuilder对象中的标准输出。
大段引用
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
- 大教堂
ByteArrayOutputStream
是你想要的(假设API将输出文本)。 只是实例化一个新的。