I / O (Input / Output)
0. 개요
1. 바이트 기반 입출력 스트림
2. 문자열 기반 입출력 스트림
3. VO(Value Object)
0. 개요
1) IO
- 외부와 데이터를 주고 받기를 추상화, 캡슐화한 패키지
- IO block: 입력을 기다림
- 단방향 모델
- FIFO(First In First Out)
- 유연한 구조: 다형성 / 묵시적인 형변환
1. 바이트 기반(xxxStream) 입출력 스트림
<바이트 기반 i/o 개요>
filter stream: sink stream을 통해 들어온 데이터를 조작하는 스트림
예) inputStreamReader / bufferedReader 등
2. 문자열 기반(Reader / Writer) 입출력 스트림: 영어권 외 국가의 언어
<문자열 기반 i/o 개요 및 Reader 계열 계층 구조>
※ PrintWriter(OutputStream out, boolean autoflush)
- flush(): 스트림에 남은 데이터를 강제롤 내보내는 역할
- close(): 원래는 finally에 들어가야 autoflush기능이 있다 / reader, writer와 연결 끊기
※ EOF(End Of File): read()가 파일에서 글자를 한 개 씩 읽음
더이상 읽을 내용이 없다면 -1 리턴
3. VO객체(Value Object)
- 정보 저장하고 있는 객체
- 내부에 필드, getter, setter method 뿐
- 객체를 입출력, 네트워크 자원으로 이동하기 위해서는 Serializable(marker interface)를 구현해야 함
※ Serializable: 인터페이스지만 구현해야하는 메서드는 없음
언젠가 외부로 나간다는 의미를 갖는 marker interface(객체 직렬화)
※ nullString: 출력시 공백
null: 아무것도 아님 / 사칙연산은 가능 / 그렇지만 사칙연산을 해도 결과는 null