В Java 11 я мог бы инициализировать InputStream
следующим образом:
InputStream inputStream = InputStream.nullInputStream();
Но я не могу понять потенциальный вариант использования InputStream.nullInputStream
или аналогичного API для OutputStream
то есть OutputStream.nullOutputStream
.
Из API Javadocs я мог понять, что это
Возвращает новый
InputStream
который не читает байтов. Возвращенный поток изначально открыт. Поток закрывается путем вызова метода close().Последующие вызовы
close()
имеют никакого эффекта. Пока поток открыт, методыavailable()
,read()
,read(byte[])
,...skip(long)
иtransferTo()
ведут себя так, как будто достигнут конец потока.
Далее я ознакомился с подробными примечаниями к выпуску, в которых говорится:
В разное время я хотел бы использовать методы, которые требуют в качестве параметра целевого объекта OutputStream/Writer для отправки вывода, но хотели бы выполнить эти методы без вывода сообщений для их других эффектов.
Это соответствует способности в Unix перенаправлять вывод команды в /dev/null или в DOS для добавления вывода команды в NUL.
Тем не менее, я не понимаю, что это за методы в заявлении, как указано как.... выполнять эти методы молча для их других эффектов. (обвините меня в отсутствии практического применения API)
Может ли кто-нибудь помочь мне понять, в чем полезность такого потока ввода или вывода с помощью примера, если это возможно?
Редактировать: Одной из похожих реализаций, которую я мог бы найти при дальнейшем просмотре, является NullInputStream
Apache-commons, который намного лучше оправдывает вариант использования тестирования.