스트림이란?
데이터가 흘러가는 가상의 통로 이다.
( 자바에서 데이터는 스트림을 통해 입출력이 이루어 진다. )
구조
1. 입력 과 출력의 통로가 따로 있다.
( 2차선 도로라고 생각하자 )
2. 읽기용 (Input) / 쓰기용 (Output)
둘 에 따라서 각자 클래스를 만들 었음
Java I/O 패키지
Java I/O 패키지란?
- API Document : https://docs.oracle.com/en/java/javase/13/docs/api/java.base/java/io/package-summary.html
문서의 설명되어 있는 말을 가져와보면 - Provides for system input and output through data streams, serialization and the file system. Unless otherwise noted, passing a null argument to a constructor or method in any class or interface in this package will cause a NullPointerException to be thrown.
- 간단하게 첫줄만 번역하면 데이터 스트림, 직렬화 및 파일 시스템을 통한 시스템 입력 및 출력 제공 이라는 말을 볼 수가 있다. 즉 Java I/O 패키지 안에는 파일 입출력과 관련된 클래스들로 구성되어 있다는 의미기도 하다.
바이트 단위 스트림
- InputStream, OutputStream 둘다 바이트 기반 입출력 스트림의 최상위 클래스로 추상 클래스이다. 관련된 모든 바이트 기반 입출력 스트림은 이 클래스를 상속받아서 만들어 진다.
- 바이트단위로 데이터를 전송하며 입출력 대상에 따라 제공하는 클래스가 다르다.
- 그림, 멀티미디어, 문자 등 모든 종류의 데이터를 주고 받을 수가 있다
- Java I/O 도식표
문자 단위 스트림
- Reader, Writer 둘다 문다 데이터 기반 입출력의 최상위 클래스이다. 관련된 모든 텍스트 기반 입출력은 이 클래스를 상속받아서 만들어 진다.
- 문자데이터를 입출력할 때 사용하는 문자기반의 스트림이다.
- 오로지 문자 데이터를 주고 받기 위해 특화되어있다.
< 기본 스트림 클래스 >
구분 | 기반 | 최상위 추상 클래스 | 활용처 |
InputStream | 1byte 기반 입력 ( == 읽기용 ) | O | 주로 멀티미디어 파일 ( 동영상 , 이미지 등 ) |
OutputStream | 1byte 기반 출력 ( == 쓰기용 ) | O | |
Reader | 문자기반 (char : 2byte) 입력 ( == 읽기용 ) |
O | 주로 텍스트 파일에 활용 |
Writer | 문자기반 (char : 2byte) 출력 ( == 쓰기용 ) |
O |
< 참조 >
경로
경로에 없다면 새로운 파일 생성
gradle(빌드) 의 기본경로 (root 경로) : build.radle 파일이 있는 위치
버퍼(buffer)
임의의 메모리 배열공간
값을 저장함
따라서 buffer 내용을 쌓았다가 파일에 넣어 주는 형식임
장점
파일입출력에 바로 접근하는 행위는 속도가 굉장히 느려짐 따라서 buffer 사용
byte 파일
( = 이진 파일 (binary file) )
열어보면 뭐라카는지 모른다.
'JAVA' 카테고리의 다른 글
Java - InputStream (최상위 추상 클래스) (0) | 2023.09.27 |
---|---|
Java - OutputStream (최상위 추상 클래스) (0) | 2023.09.27 |
Java - Collections (클래스) (0) | 2023.09.27 |
Java - Arrays (클래스) (0) | 2023.09.27 |
Java - Stream (클래스) (0) | 2023.09.27 |