Hi
로그인
Hi
로그인
Input/Output
mingggkeee
·
2022년 1월 27일
팔로우
0
Java
0
Java
목록 보기
13/20
I/O와 Stream
I : input / O : Output
데이터는 한쪽에서 주고 한쪽에서 받는 구조
입출력의 끝단은 노드(Node)
두 노드를 연결하고 데이터를 전송할 수 있는 개념 : 스트림(Stream)
스트림은 단방향으로만 통신 가능
하나의 스트림으로 입력과 출력을 같이 처리 불가능
입력 스트림 : InputStream, Reader
출력 스트림 : Outputstream, Writer
보조 스트림 : Filter Stream, Processing Stream
다른 스트림에 부가적인 기능을 제공하는 스트림
문자 set 변환
Buffering
기본 데이터 형의 전송
객체 입출력
스트림 체이닝
필요에 따라 여러 보조 스트림을 연결해서 사용 가능
보조 스트림의 종류
byte 스트림을 char 스트림으로 변환
byte 기반 : InputStreamReader, OutputStreamWriter
버퍼링을 통한 속도 향상
byte 기반 : BufferedInputStream, BufferedOutputStream
char 기반 : BufferedReader, BufferedWriter
객체 전송
byte 기반 : ObjectInputStream, ObjectOutputStream
객체 직렬화(serialization)
객체를 저장하거나 네트워크로 전송하기 위해 연속적인 데이터로 변환하는 것
반대의 경우는 역 직렬화(deserialization)
조건
Serializable 인터페이스를 구현
클래스의 모든 멤버가 Serializable 인터페이스를 구현해야 함
직렬화에서 제외하려는 멤버는 transient 선언
serialVersionUID
클래스의 변경 여부를 파악하기 위한 유일 키
직렬화 할 때의 UID와 역 직렬화 할 때의 UID가 다를 경우 예외 발생
직렬화되는 객체에 UID가 설정되지 않았을 경우 컴파일러가 자동 생성
멤버 변경으로 인한 컴파일 시마다 변경 -> InvalidClassException 초래
직렬화되는 객체에 대해서 serialVersionUID 설정 권장
Scanner와 BufferedReader
char 형태의 데이터를 읽기위한 클래스들
Scanner - 자동 형변환을 지원하는 등 사용이 간편하지만 속도가 느림
BufferedReader - 직접 스트림을 구성해야 하는 등 번거롭지만 속도가 빠름
mingggkeee
만반잘부
팔로우
이전 포스트
Lambda 표현식 - JAVA
다음 포스트
XML, XML 파싱
0개의 댓글
댓글 작성