Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

platform-independent /dev/null output sink for Java

Tags:

java

stream

Other than an anonymous class (new OutputStream() { ... }), can anyone suggest a moral equivalent of new FileOutputStream("/dev/null") that also works on Windows?

In case someone's wondering 'what's this for?'

I have a program that does a consistency analysis on a file. It has a 'verbose' option. When the verbose option is on, I want to see a lot of output. The program is not in a hurry, it's a tool, so instead of writing all those extra if statements to test if I want the output, I just want to write it to the bit-bucket when not desired.

like image 875
bmargulies Avatar asked Jan 24 '10 17:01

bmargulies


2 Answers

You can use NullOutputStream from apache commons https://commons.apache.org/proper/commons-io/javadocs/api-2.4/org/apache/commons/io/output/NullOutputStream.html

Or just implement your own

package mypackage;

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

public class NullOutputStream extends OutputStream {
    public void write(int i) throws IOException {
        //do nothing
    }
}
like image 127
iseletsk Avatar answered Sep 21 '22 05:09

iseletsk


NUL works for Windows NT, but that doesn't work in *NIX.

output = new FileOutputStream("NUL");

Better use NullOutputStream of the Commons IO instead to be platform independent.

like image 22
BalusC Avatar answered Sep 22 '22 05:09

BalusC