Независимый от платформы /dev/null выходной приемник для Java
Кроме анонимного класса (new OutputStream() { ... }
), может кто-нибудь предложить моральный эквивалент new FileOutputStream("/dev/null")
что также работает на Windows?
В случае, если кто-то задается вопросом "для чего это нужно?"
У меня есть программа, которая выполняет анализ согласованности файла. У него есть "подробный" вариант. Когда включена опция verbose, я хочу увидеть много выходных данных. Программа не спешит, это инструмент, поэтому вместо написания всех этих дополнительных if
операторы для проверки, если я хочу вывод, я просто хочу записать его в битовую корзину, когда не требуется.
4 ответа
Вы можете использовать NullOutputStream из общего доступа apache 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
}
}
Начиная с JDK 11, вы можете использовать новый статический метод для
OutputStream
- nullOutputStream
.
var out = OutputStream.nullOutputStream();
NUL
работает для Windows NT, но это не работает в *NIX.
output = new FileOutputStream("NUL");
Лучше использовать NullOutputStream
из общего фонда IO вместо того, чтобы быть независимым от платформы.
Пока вас не волнует небольшая разница в производительности (и вы не чувствуете, что вам может не хватить места), вы можете просто использовать "/dev/null". В Windows он создаст настоящий файл на любом вашем текущем диске (например, c:\dev\null).