도스나 유닉스의 명령어를 생각하면 쉽다.
예를 들어 도스에서 'type 파일명 | sort' 이런 것과 같다. <파일명을 찾고 정렬>
PipedInputStream과 PipedOutputStream을 보기전에 일단 자바API를 보자
http://docs.oracle.com/javase/7/docs/api/
이중에서 유의깊게 볼 메소드 connect라는 메소드다..말 그대로 연결.
아래 예제는 Thread를 이용하였다.
결론은 쓰레드 두개를 생성해서 키보드로 친것을 파이프 연결해서 화면으로 뱉어 내겠다는 것이다.
package ck.io;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
public class PipedInputOutput extends Thread{
InputStream is = null;
OutputStream os = null;
PipedInputOutput(InputStream is, OutputStream os){
this.is = is;
this.os = os;
}
public void run(){
byte[] buff = new byte[100];
int i = 0;
try {
for(;;){
i = is.read(buff);
if(i == -1){
return;
}else{
os.write(buff, 0, i);
}
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws IOException {
PipedInputStream pis = new PipedInputStream();
PipedOutputStream pos = new PipedOutputStream(pis);
PipedInputOutput t1 = new PipedInputOutput(System.in, pos);
PipedInputOutput t2 = new PipedInputOutput(pis, System.out);
t1.start();
t2.start();
}
}
'강좌 > JAVA I/O' 카테고리의 다른 글
JAVA I/O (자바입출력) - CharacterStream (0) | 2013.03.29 |
---|---|
JAVA I/O (자바입출력) - RandomAccessFile (0) | 2013.03.29 |
JAVA I/O (자바입출력) - ByteArrayInputStream 과 ByteArrayOutputStream (0) | 2013.03.28 |
JAVA I/O (자바입출력) - DataInputStream 과 DataOutputStream (0) | 2013.03.28 |
JAVA I/O (자바입출력) - FileInputStream와 FileOutputStream를 이용한 파일 복사 (0) | 2013.03.28 |