programing tip

Java에 Null OutputStream이 있습니까?

itbloger 2020. 8. 16. 19:54
반응형

Java에 Null OutputStream이 있습니까?


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


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

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

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


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

아직 언급되지 않았으므로 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클래스가하는 일입니다.


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

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


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


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

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

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

System.setOut( DevNull.out );

또는 비슷한 것 :)

System.setOut (PrintStream)


마을에 새로운 소년이 있는데, 이걸 매력처럼 돌봐 주는데, 코드 몇 줄만 작동하면됩니다. 그것의 JDK (11)nullWriter () 이 돌봐이 도입되었습니다. 다음은 운영 체제 (OS)에 대한 걱정없이 기존의 동일한 문제를 새로운 방식으로 처리하는 코드입니다.

String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();

이것이 누군가를 도울 수 있기를 바랍니다!


나는 이것이 당신이 찾고있는 것이라고 믿는다. 나는 똑같은 것을 찾고 있었다. 이것은 ProcessBuilder 객체에서 표준 오류로 출력 스트림을 리디렉션하기위한 것이다.

인용구

pb.redirectError( ProcessBuilder.Redirect.appendTo( new File( "NUL:" ) ) );

ByteArrayOutputStream원하는 것입니다 (API가 텍스트를 출력한다고 가정). 새로운 것을 인스턴스화하십시오.

참고 URL : https://stackoverflow.com/questions/691813/is-there-a-null-outputstream-in-java

반응형