我需要为OutputStream
我正在使用的 API 指定一个,但我实际上并不需要输出。Java是否有OutputStream
等价于> /dev/null
?
9 回答
/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
@Override
public void write(int b) throws IOException {
}
}
Java 看起来不是,但 Apache Commons IO 是。看看以下内容:
希望有帮助。
还没有提到,所以我还要添加Guava的ByteStreams。nullOutputStream(),因为有些人可能更喜欢 Guava 而不是 Apache Commons IO 或者已经在他们的项目中拥有它。
注意:如果您使用旧版本的 Guava(从 1.0 到 13.0),则需要使用com.google.io.NullOutputStream。
从 Java 11 开始,有一个静态实用程序可以完全满足您的需要,即静态工厂方法OutputStream.nullOutputStream()
:
返回一个丢弃所有字节的新 OutputStream。返回的流最初是打开的。通过调用 close() 方法关闭流。对 close() 的后续调用无效。
重新散列已经提供的答案-
Java 没有NullOutputStream
类。但是,您可以自己滚动OutputStream
忽略写入它的任何数据 - 换句话说write(int b)
,write(byte[] b)
并且write(byte[] b, int off, int len)
将具有空的方法体。这就是 Common IONullOutputStream
类所做的。
Java 11 添加了OutputStream.nullOutputStream()
镇上来了一个新男孩,他像个魅力一样照顾这个,只需几行代码就可以了。它的JDK 11和nullWriter()已经在那里引入,可以解决这个问题。这是处理相同旧问题的代码,新方法无需担心操作系统(OS)。
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
希望这可以帮助某人!
我相信这就是您要寻找的东西,我也在寻找同样的东西:这是用于从标准错误重定向输出流,在 ProcessBuilder 对象中标准输出。
块引用
pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );
- 多姆