Tiny Bunny [JAVA] 멘토씨리즈 자바_SECTION.19 - 솜님의 블로그
솜님의 블로그
작성일
2024. 7. 31. 00:28
작성자
겨울솜사탕

자바 입출력과 스트림

프로그램으로 들어오는 모든 값을 Input, 출력되는 값을 Output이라고 하는데, 이를 입출력(I/O)이라고도 부른다.

자바에서는 입출력을 처리하기 위해 별도의 I/O 패키지를 제공한다.

 

자바 프로그래밍이 디스크에 접근해 데이터를 주고받는 작업을 도와주는 통로를 '스트림(Stream)' 또는 '가상 통로'라고 한다.

 

🍀입출력 스트림의 특징
- 스트림은 입출력 장치와 자바 프로그램 간의 연결 통로로 스트림의 양 끝에서 전달이 이루어진다.
- 단방향 통신이므로 입력 스트림과 출력 스트림을 별도로 사용해야 하며 FIFO(First In First out) 구조를 이루고 있다.
- 연속된 데이터의 흐름으로 입출력 진행 시 다른 작업을 할 수 없는 상태가 된다.
- 입출력 대상을 변경하기 편하며 동일한 프로그램 구조를 유지할 수 있다.

* FIFO = 먼저 들어온 데이터가 먼저 나가는 선입선출 구조 / 큐

* LIFO = 뒤에 들어온 데이터가 먼저 나가는 후입선출 구조 / 스택

 

 

바이트 기반 스트림

파일 형식에 구애받지 않고 모든 형식을 읽고 쓸 수 있다.

바이트 기반입력 스트림의 최상위 클래스로 inputStream이 있으며, 바이트 기반 출력 스트림의 최상위 클래스로 OutputStream이 있다.

 

 

문자 기반 스트림

문자를 기반으로 하기 때문에 텍스트 문서만을 읽고 쓸 수 있다.

문자 기반 입력 스트림의 최상위 클래스로 Reader가 있으며 문자 기반 출력 스트림의 최상위 클래스로 Writer가 있다.

 

 

기반스트림과 보조 스트림

  • 기반 스트림 : 대상에 직접 자료를 읽고 쓰는 스트림
  • 보조 스트림 : 직접 읽고 쓰는 기능 없이 기반 스트림ㄹ에 추가로 사용할 수 있는 스트림

 

file 클래스

파일 및 폴더에 대한 정보들을 파악하기 위한 메서드들로 구성되어 있으며,

물리적으로 저장되어 있는 파일이나 폴더를 다루기 위해 다양한 메서드들이 있다.

 

 

직렬화/역직렬화

자바 시스템 내부에서 사용하는 객체나 데이터를 외부의 시스템에서 사용할 수 있도록 바이트 단위의 데이터로 변환시키는 기술과 바이트로 변환된 데이터를 다시 객체로 변환하는 기술을 말한다.

객체를 데이터로 변환하는 것을 직렬화, 데이터화 된 것을 다시 객체로 변환하는 것을 역직렬화라고 한다.