Есть ли нулевой выходной поток в Java?
мне нужно указать OutputStream
для API, который я использую, но на самом деле у меня нет необходимости в выводе. Есть ли у Java OutputStream
эквивалентно > /dev/null
?
9 ответов:
Java не кажется, но Apache Commons IO делает. Взгляните на следующее:
https://commons.apache.org/proper/commons-io/javadocs/api-2.5/index.html
надеюсь, что это поможет.
/**Writes to nowhere*/ public class NullOutputStream extends OutputStream { @Override public void write(int b) throws IOException { } }
Это еще не упоминается, поэтому я также добавлю гуавы ' s ByteStreams.nullOutputStream(), так как некоторые могут предпочесть Guava над Apache Commons IO или уже имеют его в своем проекте.
Примечание: если вы используете старую версию гуавы (от 1.0 до 13.0), вы хотите использовать ком.Гугл.Ио.NullOutputStream.
перефразируя уже предоставленные ответы -
Java не было!--0--> класса. Однако вы можете свернуть свой собственный
OutputStream
который игнорирует любые данные, записанные в него-другими словамиwrite(int b)
,write(byte[] b)
иwrite(byte[] b, int off, int len)
будет иметь пустые тела метода. Это то, что общее IONullOutputStream
класса.
не в стандартной библиотеке AFAIK, но его не должно быть сложно создать, переопределив запись в OutputStream
нет, но это довольно легко реализовать.
посмотреть здесь "Как удалить систему.из.println из codebase тега"
и тогда вам просто нужно:
System.setOut( DevNull.out );
или что-то подобное :).setOut (PrintStream)
начиная с Java 11, существует статическая утилита, которая делает именно то, что вам нужно, статический заводской метод
OutputStream.nullOuputStream()
:возвращает новый выходной поток, который отбрасывает все байты. Возвращаемый поток изначально открыт. Поток закрывается путем вызова метода close (). Последующие вызовы close () не имеют эффекта.