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将输出文本)。 只是实例化一个新的。