Java中是否有Null OutputStream?

时间:2009-03-27 23:33:30

标签: java outputstream

我需要为我正在使用的API指定OutputStream,但我实际上并不需要输出。 Java是否OutputStream等同于> /dev/null

11 个答案:

答案 0 :(得分:106)

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

答案 1 :(得分:61)

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

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

希望有所帮助。

答案 2 :(得分:38)

尚未提及,所以我还会添加 GuavaByteStreamsnullOutputStream() ,因为有些人可能更喜欢Guava而不是Apache Commons IO或已经在他们的项目中拥有它。

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

答案 3 :(得分:14)

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

Java没有NullOutputStream类。但是,您可以滚动自己的OutputStream忽略写入的任何数据 - 换句话说,write(int b)write(byte[] b)write(byte[] b, int off, int len)将有空的方法正文。这就是Common IO NullOutputStream类的功能。

答案 4 :(得分:5)

自Java 11起,就有一个静态工具完全可以满足您的需要,它是一个静态工厂方法OutputStream.nullOuputStream()

  

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

答案 5 :(得分:3)

不在标准库AFAIK中,但通过覆盖OutputStream中的写入来创建一个并不困难

答案 6 :(得分:3)

不,但这很容易实现。

请参阅此问题"How to remove System.out.println from codebase"

然后你必须:

System.setOut( DevNull.out );

或类似的东西:)

System.setOut(PrintStream)

答案 7 :(得分:1)

小镇上有个新男孩,像个护身符一样照顾着这个,只需几行代码即可工作。 它的 JDK 11 nullWriter()已在此处介绍,可以解决这一问题。这里有处理相同的旧问题,新方法的代码,而无需担心操作系统(OS)。

String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();

希望这可能对某人有所帮助!

答案 8 :(得分:1)

答案 9 :(得分:0)

我相信这是你正在寻找的东西,我一直在寻找同样的东西: 这是为了从ProcessBuilder对象中的标准错误标准输出重定向输出流。

  

块引用

pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
  • 的Dom

答案 10 :(得分:-3)

ByteArrayOutputStream是您想要的(假设API将输出文本)。只是实例化一个新的。