[Java] 입출력 스트림

오연주·2022년 12월 15일
0

Java

목록 보기
7/7
post-thumbnail

📘 1. 입출력 스트림

  • 자바에서 데이터는 스트림(Stream)을 통해 입출력된다. 스트림은 단일 방향으로 연속적으로 흘러가는 것을 말하는데, 물이 높은 곳에서 낮은 곳으로 흐르듯이 데이터는 출발지에서 도착지로 흘러간다.

    프로그램이 출발지냐 또는 도착지냐에 따라서 사용하는 스트림의 종류가 결정된다. 프로그램이 도착지면 흘러온 데이터를 입력받아야 하므로 입력 스트림을 사용하고 프로그램이 출발지면 데이터를 출력해야 하므로 출력 스트림을 사용한다.

📌 입출력 스트림의 종류 p.593

  • 바이트(byte) 기반 스트림 : 그림, 멀티미디어 등의 바이너리 데이터를 읽고 출력할 때 사용
  • 문자(character) 기반 스트림 : 문자 데이터를 읽고 출력할 때 사용
  • Reader와 Writer는 문자 기반 입출력 스트림의 최상위 클래스다. 이들 클래스의 하위(자식) 클래스들은 모두 문자 기반 입출력 스트림이며, 클래스 접미사로 Reader 또는 Writer가 붙는다.
    예를들어 텍스트 파일의 입출력 스트림 클래스는 FileReader와 FileWriter이다.

📌 바이트 출력 스트림: OutputStream p.594

  • 바이트 기반 출력 스트림의 최상위 클래스로 추상 클래스이고, 모든 바이트 기반 출력 스트림 클래스는 OutPutStream 클래스를 상속받아서 만들어진다.
    OutputStream클래스에는 모든 바이트 기반 출력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있다.

  • OutputStream 클래스의 주요 메소드

    리턴타입메소드설명
    voidwrite(int b)1byte를 출력한다.
    voidwrite(byte[] b)매개값으로 주어진 배열 b의 모든 바이트를 출력한다.
    voidwrite(byte[] b, int off, int len)출력 버퍼에 잔류하는 모든 바이트를 출력한다.
    voidflush()출력버퍼에 잔류하는 모든 바이트를 출력한다.
    voidclose()출력 스트림 닫기

📌 바이트 입력 스트림: InputStream p.597

  • 바이트 기반 입력 스트림의 최상위 클래스로 추상 클래스이고, 모든 바이트 기반 입력 스트림 클래스는 InputStream 클래스를 상속받아서 만들어진다.
    InputStream클래스에는 모든 바이트 기반 입력 스트림이 기본적으로 가져야 할 메소드가 정의되어 있다.

  • InputStream 클래스의 주요 메소드

    리턴타입메소드설명
    intread()1byte를 읽고 읽은 바이트를 리턴
    intread(byte[] b)읽은 바이트를 매개값으로 주어진 배열에 저장하고 읽은 바이트 수를 리턴한다.
    intread(byte[] b, int off, int len)len개의 바이트를 읽고 매개값으로 주어진 배열에서 b[off]부터 len개까지 저장한다. 그리고 읽은 바이트 수를 리턴한다.
    voidclose()입력 스트림을 닫는다.

📌 문자 출력 스트림: Writer p.602

  • Writer는 문자 기반 출력 스트림의 최상위 클래스로 추상 클래스이다. 모든 문자 클래스는 Writer 클래스를 상속받아서 만들어진다.

  • Writer 클래스의 주요 메소드

    리턴타입메소드설명
    voidwrite(int c)매개값으로 주어진 한 문자를 보낸다.
    voidwrite(char[] cbuf)매개값으로 주어진 배열의 모든 문자를 보낸다
    voidwrite(char[] cbuf, int off, int len)매개값으로 주어진 배열에서 cbuf[off]부터 len개까지의 문자를 보낸다.
    voidwrite(String str)매개값으로 주어진 문자열을 보낸다.
    voidwrite(String str, int off, int len)매개값으로 주어진 문자열에서 off순번부터 len개까지의 문자를 보낸다.
    voidflush()버퍼에 잔류하는 모든 문자를 출력한다.
    voidclose()출력 스트림을 닫는다.

📌 문자 입력 스트림: Reader p.608

  • Reader 클래스의 주요 메소드

    리턴타입메소드설명
    intread()1개의 문자를 읽고 리턴한다.
    intread(char[] cbuf)읽은 문자들을 매개값으로 주어진 문자 배열에 저장하고 읽은 문자 수를 리턴한다.
    intread(char[] cbuf, int off, int len)len개의 문자를 읽고 매개값으로 주어진 문자 배열에서 cbuf[off]부터 len개까지 저장한다. 그리고 읽은 문자수를 리턴
    voidclose()입력 스트림을 닫는다.

📌 read를 할 때 더이상 입력 스트림으로부터 바이트를 읽을 수 없다면 메소드가 -1을 리턴한다.
반복문과 if(변수==-1) break;를 이용해서 모든 글자를 읽어오게 활용할 수 있다.

profile
안녕하세요. 오연주입니다!👩🏻‍🚀

0개의 댓글