我需要为我正在使用的API指定OutputStream
,但我实际上并不需要输出。 Java是否OutputStream
等同于> /dev/null
?
答案 0 :(得分:106)
/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
@Override
public void write(int b) throws IOException {
}
}
答案 1 :(得分:61)
Java看起来并不像Apache Commons IO那样。看看以下内容:
希望有所帮助。
答案 2 :(得分:38)
尚未提及,所以我还会添加 Guava的ByteStreams。nullOutputStream() ,因为有些人可能更喜欢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 );
或类似的东西:)
答案 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)
Java 11已添加OutputStream.nullOutputStream()
答案 9 :(得分:0)
我相信这是你正在寻找的东西,我一直在寻找同样的东西: 这是为了从ProcessBuilder对象中的标准错误标准输出重定向输出流。
块引用
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
答案 10 :(得分:-3)
ByteArrayOutputStream
是您想要的(假设API将输出文本)。只是实例化一个新的。