본문 바로가기
Java

자바 요약 정리 - 입출력

by sycareer 2021. 7. 12.

13. 입출력

 

1) 보조스트림

           - InputStreamReader : 바이트스트림을 문자스트림으로 연결시켜주는 역할을 하는 보조스트림

           - BufferedReader : 문자 입력 스트림에 연결되어 버퍼를 제공해주는 보조스트림

 

2) file : 파일을 제어하기 위한 클래스로 입출력 기능을 제공하지 않는다.

- 파일의 입출력은 입출력 스트림을 사용해야 한다.

 

3) 스트림

- 스트림의 특징

           - 단방향 : 입력과 출력을 동시에 하나의 스트림으로 할 수 없음. 각각 따로 열어야 함.

           - 선입선출 : 먼저 보낸 값이 먼저 나옴

- 스트림의 구분

           - 통로 사이즈

           - 바이트 스트림 : 1byte짜리 / InputStream, OutputStream

           - 문자 스트림 : 2byte짜리 / Reader, Writer

           - 외부 매체와 직접 연결 유무

                      - 기반 스트림 : 외부 매체와 직접적으로 연결하는 통로

                      - 보조 스트림 : 속도를 빠르게 하거나 유용한 기능 제공 등을 하는 보조역할의 통로

 

3) FileOutputStream

- 파일로 데이터를 1바이트 단위로 출력하는 스트림

- true 미작성시 : 기존에 해당 파일 있을 경우 덮어씌워짐 (기본값 false)

- true 작성시 : 기존에 파일이 있는 경우 이어서 작성됨 (append)

- 없는 경로 제시시 à FileNotFoundException 발생

- write( ) 메소드 : 파일 데이터 출력하고자 할 때 사용

 

4) FileInputStream

- 파일로부터 데이터를 1바이트 단위로 입력받는 스트림

- 해당 파일이 없으면 à FileNotFoundException 발생

 

5) FileWriter

- 파일로 데이터를 2byte 단위로 출력하기 (한글이 깨지지 않음)

 

6) FileReader

- 파일로부터 데이터를 2byte 단위로 입력받기

 

7) BufferedWriter

- 장점 : 2byte 단위로 데이터가 출력될 때 버퍼라는 공간에 계속 쌓고 한 번에 출력해줌. 기반 스트림에서는 제공해주지 않는 newLine( ) 메소드를 제공하여 개행 기능이 있음.

 

8) try with resource

- 스트림 사용 후 알아서 닫아줌(close( ))

try(BufferedWriter bw = new BufferedWriter(new FileWriter("c_buffer.txt"))) {

      bw.write("안녕하세요.\n");

      bw.write("반갑습니다.");

      bw.newLine();

      bw.write("감사합니다");       

} catch (IOException e) {

      e.printStackTrace();

}

 

9) BufferedReader

- 데이터를 읽어들일 때 readLine( ) 메소드를 사용하여 버퍼에 쌓았다가 한 번에 한 줄씩 읽어들임.

 

10) 객체를 파일에 출력할 때 사용하는 스트림

- FileOutputStream : 파일출력에 사용되는 기본 바이트 스트림 클래스

- ObjectOutputStream : 객체 단위로 출력시 사용되는 보조 바이트 스트림 클래스

 

11) 파일로부터 읽어들일 때 사용하는 스트림

- FileInputStream : 파일로부터 데이터를 읽어들이기 위해 사용되는 기본 바이트 스트림 클래스

- ObjectInputStream : 스트림으로부터 객체 단위로 읽어들이기 위해 사용되는 보조 바이트 스트림 클래스

*ObjectOutputStream ObjectInputStream을 해야할 때 반드시 해야하는 것은? 직렬화

 

12) EOFException

- 파일에 더 이상 읽을 내용이 없을 때 발생하는 Exception

- 발생할 수밖에 없는 예외이기 때문에 처리 로직을 작성해줘야 함.

 

13) 직렬화

- 객체를 입출력하고자 한다면 반드시 직렬화가 필요하다.

- 객체를 바이트의 배열로 변환해서 파일이나 메모리 등을 저장하는 과정

- 저장된 것을 다시 객체로 변환하는 것을 역직렬화라고 한다.

'Java' 카테고리의 다른 글

서비스 전체 트랜잭션 롤백 처리  (0) 2023.11.08
자바 요약 정리 - 예외 처리  (0) 2021.07.12
자바 요약 정리 - 이차원배열  (0) 2021.07.12
자바 요약 정리 - 객체배열  (0) 2021.07.12
자바 요약 정리 - 배열  (0) 2021.07.08