[java] Java에 Null OutputStream이 있습니까?

OutputStream사용중인 API에을 지정해야 하지만 실제로 출력이 필요하지 않습니다. Java에는와 OutputStream동등한 기능이 > /dev/null있습니까?



답변

Java 11부터 필요한 작업을 정확히 수행하는 정적 유틸리티 인 정적 팩토리 메소드가 있습니다 OutputStream.nullOutputStream().

모든 바이트를 버리는 새로운 OutputStream을 반환합니다. 반환 된 스트림은 처음에 열립니다. close () 메서드를 호출하여 스트림을 닫습니다. 이후의 close () 호출은 효과가 없습니다.


답변

/**Writes to nowhere*/
public class NullOutputStream extends OutputStream {
  @Override
  public void write(int b) throws IOException {
  }
}


답변

Java는 보이지 않지만 Apache Commons IO는 그렇습니다. 다음을 살펴보십시오.

https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/output/NullOutputStream.html

도움이 되었기를 바랍니다.


답변

아직 언급되지 않았으므로 GuavaByteStreams 도 추가하겠습니다 . nullOutputStream () , 일부는 Apache Commons IO보다 Guava를 선호하거나 이미 프로젝트에있을 수 있습니다.

참고 : 이전 버전의 Guava (1.0 ~ 13.0)를 사용하는 경우 com.google.io.NullOutputStream 을 사용하는 것이 좋습니다 .


답변

이미 제공된 답변을 다시 해싱-

Java에는 NullOutputStream클래스 가 없습니다 . 당신은 그러나 자신의 롤 수 OutputStream에 쓸 데이터 무시하는 – 즉을 write(int b), write(byte[] b)그리고 write(byte[] b, int off, int len)빈 방법의 몸이있을 것이다. 이것이 Common IO NullOutputStream클래스가하는 일입니다.


답변

표준 라이브러리 AFAIK에는 없지만 OutputStream에서 쓰기를 재정 의하여 만드는 것이 어렵지 않습니다.


답변

아니요,하지만 구현하기는 매우 쉽습니다.

“코드베이스에서 System.out.println을 제거하는 방법” 질문을 참조하십시오.

그리고 다음을 수행하면됩니다.

System.setOut( DevNull.out );

또는 비슷한 것 🙂

System.setOut (PrintStream)