문제
다음보다 Java의 출력에 대한 입력을 "파이핑"하기위한 더 간결한/표준 관용구 (예 : JDK 방법)가 있습니까?
public void pipe(Reader in, Writer out) { CharBuffer buf = CharBuffer.allocate(DEFAULT_BUFFER_SIZE); while( in.read(buf) >= 0 ) { out.append(buf.flip()); buf.clear(); } }
편집] 참고하십시오 Reader
그리고 Writer
~이다 주어진. 정답은 취하는 방법을 보여줍니다 in
그리고 out
파이프를 형성합니다 (바람직하게는 1 또는 2 메소드 호출을 초과하지 않음). 나는 어디에서 답을 받아 들일 것이다 in
그리고 out
an InputStream
그리고 OutputStream
(바람직하게는/~ 전환으로 Reader
/Writer
). 나는 어디에서나 답을 받아들이지 않을 것입니다 in
또는 out
a 아강 의 Reader
/InputStream
또는 Writer
/OutputStrem
.
다른 팁
보세요 java.io.pipedInputStream 그리고 pipedoutputStream, 또는 PipedReader/파이프 라이터 같은 패키지에서.
PipedInputStream의 문서에서 :
파이프 입력 스트림은 파이프 출력 스트림에 연결해야합니다. 파이프 입력 스트림은 파이프 출력 스트림에 기록되는 데이터 바이트를 제공합니다. 일반적으로 데이터는 하나의 스레드로 PipedInputStream 객체에서 읽히고 데이터는 다른 스레드에 의해 해당 PipedOutputStream에 기록됩니다. 단일 스레드에서 두 객체를 사용하려고 시도하는 것은 스레드에 교착 상태가 될 수 있으므로 권장되지 않습니다. 파이프 입력 스트림에는 제한 내에서 쓰기 작업에서 읽기 작업을 해체하는 버퍼가 포함되어 있습니다. 연결된 파이프 출력 스트림에 데이터 바이트를 제공하는 스레드가 더 이상 살아 있지 않으면 파이프가 파손된다고합니다.