JAVA 웹 개발 패키지 - 패스트캠퍼스/Chapter6

문자 단위 입출력 스트림 ( Reader , Writer )

giggs 2022. 1. 24. 14:10

문자 단위 입출력 스트림

 

Reader

  • 문자 단위 입력 스트림 최상위 추상 클래스
  • 많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현함

 

  • 주요 하위 클래스
클래스 설명
FileReader 파일에서 문자 단위로 읽는 스트림 클래스입니다.
InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해주는 보조 스트림 클래스 입니다.
BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공하는 보조 스트림입니다.

  • 주요 메서드
메서드 설명
int read() 파일로부터 한 문자를 읽습니다. 읽은 문자를 반환합니다.
int read(char[] buf) 파일로부터 buf 배열에 문자를 읽습니다.
int read(char[] buf, int off, int len) 파일로부터 buf 배열의 off 위치로부터 len 개수만큼의 문자를 읽습니다.
void close() 입력 스트림과 연결된 대상 리소스를 닫습니다.

 

 


 

FileReader - 파일에서 문자 읽기 - 

 

 

- 한글 문자 파일 하나 만들어 주고

 

 

 

- 바이트 단위로 읽어왔던 FileInputStream으로 읽어 보기 Test  

 

한글은 다 깨지는 거 확인 

 

 

 

- 문자 단위 입출력 스트림 FileReader로 읽어 보기 Test

 

한글 문자 잘 출력됨을 확인!

 

 


 

Writer

  • 문자 단위 출력 스트림 최상위 추상 클래스
  • 많은 추상 메서드가 선언되어 있고 이를 하위 스트림이 상속받아 구현함

 

  • 주요 하위 클래스
클래스 설명
FileWriter 파일에서 문자 단위로 출력하는 스트림 클래스입니다.
OutputStreamWriter 바이트 단위의 자료를 문자로 변환해 출력해주는 보조 스트림 클래스 입니다.
BufferedWriter 문자로 쓸 때 배열을 제공하여 한꺼번에 쓸 수 있는 기능을 제공하는 보조 스트림입니다.


 

 

  • 주요 메서드
메서드 설명
int write(int c) 한 문자를 파일에 출력합니다.
int write(char[] buf) 문자 배열 buf의 내용을 출력합니다.
int write(char[] buf, int off, int len) 문자 배열 buf의 off위치에서부터 len 개수의 문자를 출력합니다.
int write(String str) 문자열 str을 출력합니다.
int write(String str, int off, int len) 문자열 str의 off번째 문자로부터 len 개수만큼 출력합니다.
int flush() 출력하기 전에 자료가 있는 공간(출력 버퍼)을 비워 출력하도록 합니다
void close() 스트림과 연결된 리소스를 닫습니다. 출력 버퍼도 비워집니다.

 

 


 

FileWriter - 파일에 문자 쓰기

 

 

- 문자배열 buffer를 가지고 함수 사용 테스트

-- 파일 잘 생성되어서 입력 잘 되었는지 Test 

 

 

A / BCDEFG / 안녕하세요. 잘 써지네요 / CD / 65 

5개 출력 값 확인

 

 

 

문자를 핸들링 해주는 Reader와 Writer 학습!

 

 


 

 

review

문자 단위 입출력 스트림 ( Reader , Writer )
최상위 추상 클래스로 파일 입출력하는 FileReader와 FileWriter로 실습
파일에 한 문자를 읽거나 써주고, 문자배열 단위로 읽거나 써주는 것이 가능하다.

바로 전에 배웠던 byte단위 IO 스트림의 대표로 실습해보았던
FileInputStream / FileOutputStream 과 이름도 사용법도 비슷하였다.
다만 byte 단위로 핸들링하는 것인지 -( 한글은 바이트가 아니라 다 깨져서 보였다. )
문자 단위로 핸들링하는 것인지가 -( 한글 정상 출력 )
가장 큰 차이점이었다. 

하나씩 입출력하는것과 배열 단위로 입출력하는 것
배열에서도 지정 위치부터 지정 개수만큼 입출력하는 것
비슷한 점이 많아서 사용하는데 큰 어려움은 없었다.