데이터 프로그램 외부로 보내기/읽어오기

Jiyeong·2022년 1월 26일
0

JAVA

목록 보기
8/31

입출력 및 고급 스트림 연결 기법

Input Source 혹은 Output Source를 갖는 순서화된 일련의 자료를 나타내는 추상적인 입출력 모델 -> Java I/O에선 입력 자료 또는 출력 자료의 타입이 무엇인지 아는 것이 가장 중요함.
I/O 관련 메소드는 IOException을 throw하도록 되어 있음 -> java.io 패키지 내의 모든 예외 클래스는 IOException의 하위 클래스.

문자 세트와 문자 인코딩

UTF-8 : Unified Text File 웬만한 거 다 변환. 8바이트로 인코딩.

자바는 유니코드 사용

Stream의 종류

입출력에 따른 스트림 :

  • 입력 스트림 : InputStream, Reader
  • 출력 스트림 : OutputStream, Writer

자료 타입에 따른 스트림

  • Byte Stream : InputStream, OutputStream
  • Character Stream : Reader, Writer

스트림의 생성에 따른

  • 1차 스트림 : 파일, 메모리에 직접 Stream을 생성
    FileInputStream, FileWriter
  • Wrapper Stream(보조 스트림) : 이미 생성된 Stream에 추가적인 기능 제공
    InputStreamReader, BufferedReader

입출력 소스에 따른 스트림

: 파일, 메모리, 네트우커, 다른 프로세스 또는 쓰레드

텍스트 데이터의 경우 :

표준 입출력 스트림 :

OutputStream 클래스

이진 데이터(Byte Data)를 쓰는데 관련된 모든 출력 스트림의 추상 슈퍼 클래스로 이진 데이터를 쓰는데 필요한 3가지의 기본적인 메소드가 선언되어 있음.
이외에 스트림 닫기, 플러싱하기 같은 기능을 지원하기 위한 메소드 포함.
이 클래스에는 write() 메소드가 추상메소드로 제공되어지고 있으므로 그 하위 클래스를 만들 경우에는 꼭 이 메소드를 재정의해야 함.

바이트 배열 쓰기 :

출력 스트림의 flushing과 닫기 :

출력스트림의 버퍼 : 메모리 버퍼의 사이즈별로 쌓아 두고, 버퍼가 가득 채워지면 모든 데이터를 한 번에 내버내도록 구성됨.
flush() 메소드는 버퍼에 데이터가 가득 차 있건 아니건 버퍼에서 강제로 밀어냄.
close() 메소드는 명시적으로 자바의 I/O 스트림을 닫아주는 메소드.

flush() -> close()

InputStream 클래스

이진 데이터(Byte Data)를 읽어오는데 관련된 모든 입력 스트림의 추상 슈퍼 클래스로 이진 데이터를 읽어오는데 필요한 세 가지의 기본적인 메소드가 선언됨. 이외에 close(), flush(), 입력 건너뛰기, 특정 위치에 마크하고 리셋할 수 있는 기능을 지원하기 위한 메소드 포함.
이 클래스에는 read() 메소드가 추상메소드로 제공되어지므로 그 하위 클래스를 만들 경우 이 메소드를 재정의해야 함.

FileInputStream(String name) : 지정된 파일 이름을 가진 실제 파일과 연결된 스트림 생성
FileOutputStream(String name) : 지정된 파일 이름을 가진 실제 파일과 연결된 스트림 생성. 파일이 존재하지 않는 경우 파일 생성.

InputStream의 하위 클래스 만들기:

직렬화:

객체를 데이터 스트림으로 만드는 것으로 객체를 저장하거나 전송하기 위해 객체를 연속적인 데이터로 변환시킴.
객체의 인스턴스 변수를 저장하고 이를 다시 읽어 들이면 객체를 복원할 수 있다.

profile
깃스타가 되고 싶은 벨플루언서

0개의 댓글