스트림

  • 바이트 기반 스트림 -> 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 받고 보낼 수 있다

  • 바이트 기반 스트림 최상 클래스 -> 입력 InputStream, 출력 OutputStream

  • 문자 기반 스트림 -> 오로지 문자만 받고 보낼 수 있도록 특화되어 있다

  • 문자 기반 스트림 최상 클래스 -> 입력 Reader, 출력 Writer


입력 스트림

  • 프로그램이 데이터를 입력 받을 때에는 입력 스트림
  • 입력 스트림의 출발지는 키보드, 파일, 네트워크상의 프로그램

출력 스트림

  • 프로그램이 데이터를 보낼 때에는 출력 스트림
  • 출력 스트림의 도착지는 모니터, 파일, 네트워크상의 프로그램

InputStream

  • 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스이다

  • FileInputStream, BufferedInputStream, DataInputStream 클래스 모두 InputStream 클래스를 상속하고 있다

  • read() 메소드

    1 바이트를 읽고 4 바이트 int 타입을 리턴한다

    4 바이트 중 끝의 1 바이트에만 데이터가 들어 있다

    만약 입력 스트림으로부터 바이트를 읽을 수 없다고 read() 메소드는 -1을 리턴한다

    마지막 바이트까지 루프를 돌며 한 바이트씩 읽을 수 있다

    InputStream is = new FileInputStream("C:/test.jpg");
    int readByte;
    while ((readByte = is.read()) != -1) {...}
    
  • close() 메소드

    is.close();
    

OutputStream

  • 바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스이다

  • FileOutputStream, PrintStream BufferedOutputStream, DataOutputStream 클래스 모두 OutputStream 클래스를 상속하고 있다

  • write() 메소드

    매개 변수로 주어진 int 값에서 끝에 있는 1바이트만 출력 스트림으로 보낸다

    OutputStream os = new FileOutputStream("C:/test.txt");
    byte[] data = "ABC".getBytes();
    for(int i=0; i<data.length; i++) {
        os.write(data[i]); // "A", "B", "C"를 하나씩 출력
    }
    
  • flush()와 close() 메소드

    출력 스트림은 내부에 작은 버퍼가 있어서 데이터가 출력되기 전에 버퍼가 쌓여있다가 순서대로 출력

    flush() 메소드는 버퍼에 잔류하고 있는 데이터를 모두 출력시키고 버퍼를 비우는 역할


Reader

  • 문자 기반 입력 스트림의 최상위 클래스로 추상 클래스이다
  • FileReader, BufferedReader, InputStreamReader 클래스 모두 Reader 클래스를 상속하고 있다

Writer

  • 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스이다
  • FileWriter, BufferedWriter, PrintWriter, OutputStreamWriter 클래스 모두 Writer 클래스를 상속하고 있다

태그:

카테고리:

업데이트:

댓글남기기