Java에 Null OutputStream이 있습니까?


112

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

답변:


19

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

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


지적 해 주셔서 감사합니다! 하지만 "자바 11 이후"? Java 11이 출시 된 지 일주일 밖에되지 않았습니다.
Brandon Yarbrough

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

15
이것은 또한 다음과 같은 것을 사용하여 필요할 때마다 쉽게 구현할 수 있습니다. OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
Hank Schultz




3

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


왜 이것이 비추천을 받았습니까? McDowell이 위에서 보여준 것처럼이 솔루션을 구현하는 것은 실제로 사소한 일입니다.
pdxleif



1

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

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

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


0

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

인용구

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

이것은 Windows에만 해당됩니다.
peterh

-4

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


2
데이터를 버리지 않고 메모리에 축적 할 것이기 때문에 이것은 나쁜 생각입니다. 작성자가 BAOS에 15GB의 정크를 기록하면 어떻게됩니까? 일어날 수 있습니다.
모드를 잘 대하십시오.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.