Java中是否有Null OutputStream?

Bra*_*ugh 103 java outputstream

我需要指定一个OutputStream我正在使用的API,但我实际上并不需要输出.Java有OutputStream相当于> /dev/null

McD*_*ell 110

/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
  @Override
  public void write(int b) throws IOException {
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 这也可以通过以下方式轻松实现:`OutputStream nullOutputStream = new OutputStream(){@ Override public void write(int b){}};` (14认同)

Jon*_*Jon 65

Java看起来并不像Apache Commons IO那样.看看以下内容:

https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/output/NullOutputStream.html

希望有所帮助.


hay*_*lem 40

它还没有被提及,所以我还要添加GuavaByteStreams.nullOutputStream(),因为有些人可能更喜欢Guava而不是Apache Commons IO,或者已经将它放在他们的项目中.

注意:如果您使用较旧版本的Guava(从1.0到13.0),则需要使用com.google.io.NullOutputStream.


Vin*_*lds 14

重新提供已经提供的答案 -

Java没有NullOutputStream类.然而,您可以滚动自己OutputStream忽略写入其中的任何数据 - 换句话说write(int b),write(byte[] b)并且write(byte[] b, int off, int len)将具有空方法体.这就是Common IO NullOutputStream类的功能.


lev*_*tov 10

从Java 11开始,有一个静态工具可以完全满足您的需要,它是一个静态工厂方法OutputStream.nullOutputStream()

返回一个丢弃所有字节的新OutputStream。返回的流最初是打开的。通过调用close()方法关闭流。随后对close()的调用无效。