Java的平台无关/ dev/null输出接收器

bma*_*ies 12 java stream

除了一个匿名类(new OutputStream() { ... })之外,任何人都可以建议道德等同new FileOutputStream("/dev/null")于在Windows上运行吗?

如果有人想知道'这是为了什么?'

我有一个程序,对文件进行一致性分析.它有一个'详细'选项.当详细选项打开时,我想看到很多输出.程序不是很匆忙,它是一个工具,所以不是编写所有这些额外的if语句来测试我是否需要输出,我只是想在不需要时将它写入比特桶.

ise*_*tsk 18

您可以使用来自apache commons的NullOutputStream https://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/output/NullOutputStream.html

或者只是实现自己的

package mypackage;

import java.io.OutputStream;
import java.io.IOException;

public class NullOutputStream extends OutputStream {
    public void write(int i) throws IOException {
        //do nothing
    }
}
Run Code Online (Sandbox Code Playgroud)

  • (Null对象模式,特殊情况模式的特殊情况.)(我将添加一个覆盖(使用@Override)的`write(int,int,byte [])`来增加(尽管可能无关)性能.我总是使用单个实例作为null对象,但我想你可能会遇到外部锁定问题(`Reader` /`Writer在这里有装饰器问题).)(这个评论包含故意的错误.) (3认同)

Ser*_*rCe 6

OutputStream从 JDK 11 开始,您可以在-上使用新的静态方法nullOutputStream

var out = OutputStream.nullOutputStream();
Run Code Online (Sandbox Code Playgroud)