학원/JAVA - 학원

입출력 스트림

수풀속의고라니 2022. 2. 23. 16:15
728x90

java.io 패키지에서 자바의 기본적인 데이터 입출력 API를 제공한다.

- 입출력 스트림의 단위는 byte

- Reader/Writer의 단위는 문자

- 위의 두 종류가 최상위 클래스들이고, 그 아래는 하위클래스들

개념

 

바이트 기반 스트림과 문자 기반 스트림

 

- 바이트 기반 스트림은 그림, 멀티미디어, 문자 등을 포함하며, 문자 기반은 문자만 포함한다.

 

InputStream

 

- 추상 클래스

 

주요 메소드

 

- read : 1바이트

- 읽은 바이트를 배열 b에 저장하고, 읽은 바이트 수를 리턴

- 배열 b를 off인덱스에서 읽어서 len에서 지정한 수만큼 리턴(len이 8개고 5개를 읽었다면 5만 리턴)

 

<예제>

abcde출력

 

위의 코드를 간단하게 처리한는 방법도 있다

 

 

이처럼 while문과 if문 안에 있던 식을 조건식 안에 집어넣으면 압축이 가능하다.

 

<예제>

 

OutputStream

 

- 추상 클래스

 

주요 메소드

 

- 리턴 타입이 없다

- 1바이트 보내는것(write)

- 배열을 보냄 - 배열은 모든 바이트

- b바이트의 배열에 인덱스 off에서 해당하는 길이만큼 보냄

- 자원 반납

- flush : 내가 보내야할 문자들이 다 안갈때 이걸 쓰면 한꺼번에 남은걸 다 출력

 

<예제>

 

<예제>

 

<예제>

 

Reader

 

- Reader은 추상 클래스 하위는 일반 클래스

 

주요 메소드

 

- 1개의 문자

- char배열의 문자 수를 리턴

- cbuf에서 읽은 인덱스로 부터 인덱스의 개수를 리턴

 

<예제>

 

<예제>

 

Writer

 

- Writer은 추상 그 아래는 일반 클래스

 

주요 메소드

 

- 리턴타입은 없음

- 문자를 묶어서 배열로

- cbuf배열을 off인덱스에서 길이만큼 출력

- 모든 문자열을 보냄

- 문자열을 off인덱스에서 길이만큼 출력

 

<예제>

 

<예제>

 

<예제>

 

<예제>

 

 

728x90