자바/입출력 IO

문자 기반의 보조 스트림: (Buffered, InputStream, OutputStream) 읽기와 쓰기

백_곰 2022. 4. 27. 11:15

1. BufferedReader와 BufferedWriter

- 버퍼를 이용해서 입출력의 효율을 높일 수 있도록 해주는 역할을 한다.

 

- 버퍼를 이용하면 입출력의 효율이 비교할 수 없을 정도로 좋아진다.

 

- BufferedReaderreadLine()을 사용하면 라인 단위로 읽는다.

 

- BufferedWriternewLine()을 사용하면 줄바꿈을 해준다.

 

 

 

 

1-1. BufferedReader와 BufferedWriter를 이해하기 위한 예제(1)

 

Exercise019

( 문장 끝 ';'이 포함된 구문만 출력되게 하였다. )

 

 

 

 

2. InputStreamReader와 OutputStreamWriter

- 바이트 기반 스트림을 문자 기반 스트림으로 연결시켜주는 역할을 한다.

 

- 바이트 기반 스트림의 데이터를 지정된 인코딩의 문자 데이터로 변환하는 작업을 수행한다.

 

 

- 아래는 InputStreamReader생성자/메서드를 설명한다.

 

(1) InputStreamReader(InputStream in)

: OS에서 사용하는 기본 인코딩의 문자로 변환하는 InputStreamReader를 생성한다.

 

(2) InputStreamReader(InputStream in, String encoding)

: 지정된 인코딩을 사용하는 InputStreamReader를 생성한다.

 

(3) String getEncoding()

: InputStreamReader의 인코딩을 알려준다.

 

 

- 아래는 OutputStreamWriter생성자/메서드를 설명한다.

 

(1) OutputStreamWriter(OutputStream in)

: OS에서 사용하는 기본 인코딩의 문자로 변환하는 OutputStreamWriter를 생성한다.

 

(2) OutputStreamWriter(OutputStream in, String encoding)

: 지정된 인코딩을 사용하는 OutputStreamWriter를 생성한다.

 

(3) String getEncoding()

: OutputStreamWriter의 인코딩을 알려준다.

 

 

( 만약 한글 윈도우에서 중국어로 작성된 파일을 읽을 때, InputStreamReader(InputStream in,

String encoding)를 이용해서 인코딩이 중국어로 되어 있다는 것을 지정해주어야 글자가

깨지지 않는다. )

 

( OutputStreamWriter 또한 마찬가지이다. )

 

( 시스템 속성에서 sun.jnu.encoding의 값을 보면 OS에서 사용하는 인코딩의 종류를 알 수 있다. )

( 아래의 코드처럼 쓰면 된다. )

 

Properties prop = System.getProperties();

System.out.println(prop.get("sun.jnu.encoding"));

 

 

 

 

2-1. InputStreamReader와 OutputStreamWriter를 이해하기 위한 예제(1)

 

Exercise020