Ich muss eine OutputStream
für eine API angeben, die ich verwende, aber ich brauche die Ausgabe nicht wirklich. Hat Java ein OutputStream
Äquivalent zu > /dev/null
?
java
outputstream
Brandon Yarbrough
quelle
quelle
quelle
OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
Java scheint es nicht zu sein, Apache Commons IO jedoch. Schauen Sie sich Folgendes an:
https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/output/NullOutputStream.html
Hoffentlich hilft das.
quelle
Es ist noch nicht erwähnt, also werde ich auch hinzufügen Guava ‚s Bytestreams . nullOutputStream () , da einige Guava Apache Commons IO vorziehen oder es bereits in ihrem Projekt haben.
Hinweis: Wenn Sie eine ältere Version von Guava (von 1.0 bis 13.0) verwenden, möchten Sie com.google.io.NullOutputStream verwenden .
quelle
Aufwärmen der bereits gegebenen Antworten -
Java hat keine
NullOutputStream
Klasse. Sie können jedoch Ihre eigenen rollenOutputStream
, die alle darauf geschriebenen Daten ignorieren - mit anderen Wortenwrite(int b)
,write(byte[] b)
undwrite(byte[] b, int off, int len)
leere Methodenkörper haben. Dies ist, was die Common IO-NullOutputStream
Klasse tut.quelle
Nicht in der Standardbibliothek AFAIK, aber es sollte nicht schwierig sein, eine zu erstellen, indem das Schreiben in OutputStream überschrieben wird
quelle
Nein, aber es ist ziemlich einfach zu implementieren.
Siehe diese Frage "So entfernen Sie System.out.println aus der Codebasis"
Und dann müssen Sie nur noch:
Oder etwas ähnliches :)System.setOut (PrintStream)
quelle
Java 11 hat OutputStream.nullOutputStream () hinzugefügt
quelle
Es gibt einen neuen Jungen in der Stadt, der sich wie ein Zauber darum kümmert, nur wenige Codezeilen sollten funktionieren. Dort wurden JDK 11 und nullWriter () eingeführt, die sich darum kümmern. Hier ist der Code, um das gleiche alte Problem auf neue Weise zu lösen, ohne sich um das Betriebssystem zu kümmern.
Hoffe das kann jemandem helfen!
quelle
Ich glaube, dass dies das ist, wonach Sie suchen. Ich habe das Gleiche gesucht: Dies dient zum Umleiten von Ausgabestreams von Standardfehlern, die in ProcessBuilder-Objekten standardmäßig ausgegeben werden.
quelle
ByteArrayOutputStream
ist das, was Sie wollen (vorausgesetzt, die API gibt Text aus). Instanziieren Sie einfach eine neue.quelle