본문 바로가기

강좌/JAVA I/O

JAVA I/O (자바입출력) - PipedInputStream과 PipedOutputStream

도스나 유닉스의 명령어를 생각하면 쉽다.


예를 들어 도스에서 '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();

}

}


콘솔에 글을 입력 하면
친 글이 나타 파이프를 타고 화면에 나온다.