OutputStream
사용중인 API에을 지정해야 하지만 실제로 출력이 필요하지 않습니다. Java에는와 OutputStream
동등한 기능이 > /dev/null
있습니까?
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 {
}
}
OutputStream nullOutputStream = new OutputStream() { @Override public void write(int b) { } };
Java는 보이지 않지만 Apache Commons IO는 그렇습니다. 다음을 살펴보십시오.
도움이 되었기를 바랍니다.
아직 언급되지 않았으므로 Guava 의 ByteStreams 도 추가하겠습니다 . 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
클래스가하는 일입니다.
아니요,하지만 구현하기는 매우 쉽습니다.
"코드베이스에서 System.out.println을 제거하는 방법" 질문을 참조하십시오.
그리고 다음을 수행하면됩니다.
System.setOut( DevNull.out );
또는 비슷한 것 :)
Java 11 추가 OutputStream.nullOutputStream ()
마을에 새로운 소년이 있는데, 이걸 매력처럼 돌봐 주는데, 코드 몇 줄만 작동하면됩니다. 그것의 JDK (11) 와 nullWriter () 이 돌봐이 도입되었습니다. 다음은 운영 체제 (OS)에 대한 걱정없이 기존의 동일한 문제를 새로운 방식으로 처리하는 코드입니다.
String fileContent = "Welcome to StackOverflow readers !! Here goes the question link...";
Writer writer = Writer.nullWriter();
writer.write(fileContent);
writer.close();
이것이 누군가를 도울 수 있기를 바랍니다!
ByteArrayOutputStream
원하는 것입니다 (API가 텍스트를 출력한다고 가정). 새로운 것을 인스턴스화하십시오.