본문 바로가기
빅데이터 부트캠프/Java

빅데이터 부트캠프 67일차

by Mecodata 2022. 10. 13.

Stream

- 데이터를 전송하는 연결 통로

- 단방향, 선입선출

 

ByteStream

- 1byte를 입출력할 수 있는 스트림

- Java에서 입출력 스트림을 통해 흘러가는 데이터의 기본 단위

- 바이트로 구성된 이미지, 동영상, 음악 파일 처리에 적합한 스트림 

- InputStream과 OutputStream 두 종류가 존재

 

ByteStream을 이용한 데이터 입/출력

- output은 바깥에 파일로 작성, input은 바깥 파일을 읽어 내부로 입력으로 생각하면 편리

FileOutputStream/FileInputStream = 바이트 데이터 입/출력

FileWriter/FileReader = char 타입 데이터 입/출력

 

- 바이트 스트림으로 바이너리 파일 쓰기

FileOutputStream 객체 생성 -> 객체.write()로 파일에 기록 -> 객체.close()로 종료

 

- 바이트 스트림으로 바이너리 파일 읽기

FileInputStream 객체 생성 -> 객체.read()로 파일 내용 읽기 -> 객체.close()로 종료

 

- 바이트 스트림으로 텍스트 파일 쓰기

FileWriter 객체 생성 -> 객체.write()로 파일에 기록 -> 객체.close()로 종료

 

- 바이트 스트림으로 텍스트 파일 읽기

FileReader 객체 생성 -> 객체.read()로 파일 내용 읽기 -> 객체.close()로 종료

 

- write(데이터) = 지정한 객체에 해당 데이터 입력 
- write(데이터, 시작인덱스 번호, 데이터 개수) = 지정한 데이터가 리스트 혹은 배열일 경우 데이터 입력에 사용할 데이터의 범위를 인덱스 번호 및 개수로 지정

Buffer

- 8192(2^13)바이트 배열 

- 입/출력에 대한 임시 저장공간 -> 데이터를 한번에 처리하도록 도와주는 보조 스트림

 

BufferedInputStream/BufferedOutputStream

- FileStream 객체를 BufferedStream 객체 생성시 인자값으로 넣어줌으로써 버퍼를 씌울 수 있음

 

- 버퍼를 사용하여 보다 빠르게 바이너리 파일 쓰기

FileOutputStream 객체 생성 -> BufferedOutputStream 객체 생성시 인자값으로 FileOutputStream 객체 입력 -> 객체.write()로 파일에 기록 -> 객체.close()로 종료

 

- 버퍼를 사용하여 보다 빠르게 바이너리 파일 읽기

FileInputStream 객체 생성 -> BufferedInputStream 객체 생성시 인자값으로 FileOutputStream 객체 입력 -> 객체.read()로 파일 내용 읽기 -> 객체.close()로 종료

 

직렬화(Serialization)

- 메모리 상의 객체 또는 데이터를 외부 자바 시스템(파일, 다른 PC)에서도 사용할 수 있도록 바이트 스트림 형태로 변환하는 기술

- 생성한 클래스가 파일을 읽거나 쓸 수 있도록 하거나, 다른 서버로 보내거나 받을 수 있도록 하기 위해 사용

- implements Serializable을 통해 Serializable 인터페이스를 상속받음으로써 적용 가능

- transient = 직렬화 제외 설정 (외부 유출 방지, 데이터 타입 앞에 입력)

 

댓글