티스토리 뷰
반응형
[Java의 정석 - http://www.yes24.com/Product/Goods/24259565]
1. 자바에서의 입출력
1.1 입출력이란?
- 입출력(I/O) : 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것
1.2 스트림(stream)
- 스트림 : 데이터를 운반하는데 사용되는 연결통로
- 단방향 ㅎ통신만 가능
- FIFO(First In First Out) 구조
1.3 바이트기반 스트림 - InputStream, OutputStream
- 입력 스트림
- FileInputStream
- ByteArrayInputStream
- PipedInputStream
- AudioInputStream
- 출력 스트림
- FileOutputStream
- ByteArrayOutputStream
- PipedOutputStream
- AudioOutputStream
1.4 보조 스트림
- 보조스트림은 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력할 수 있는 기능은 없지만
스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다 - 종류
- FileInputStream/FileOutputStream
- BufferdInputStream/BufferdOutputStream
- DataInputStream/DataOutputStream
- SequenceInputStream
- LineNumberInputStream
- ObjectInputStream/ObjectOutputStream
- PrintStream(출력 스트림)
- PusbackInputStream
1.5 문자기반 스트림 - Reader, Wrtier
- 2 byte 문자를 읽을 때
- InputStream 대신에 Reader, OuputStream 대신에 Writer 사용
7. 직렬화(Serialization)
7.1 직렬화란?
- 직렬화(Serialization)
- 객체를 데이터 스트림으로 만드는 것
- 객체에 저장된 데이터를 스트림에 쓰기(write)하기 위해 연속적인(serial) 데이터로 변환하는 것
- 역직렬화(Deserialization)
- 스트림으로부터 데이터를 읽어서 객체를 만드는 것
7.2 ObjectInputStream, ObjectOutputStream
- 직렬화에는 ObjectOutputStream, 역직렬화에는 ObjectInputStream 사용
7.3 직렬화가 가능한 클래스 만들기 - Serializable, trasient
- 직렬화가 가능한 클래스를 만들려면 java.io.Serializable 인터페이스를 구현하도록 하면 된다
- 직렬화하고자 하는 객체의 클래스에 직렬화가 안되는 객체에 대한 참조를 포함하고 있다면 제어자 transient를 붙여서 직렬화 대상에서 제외되도록 할 수 있다
- 객체를 역직렬화할 때는 직렬화할 때의 순서와 일치해야 한다
7.4 직렬화가능한 클래스의 버전 관리
- 클래스 내에 static final long serialVersionUID를 정의해주면 클래스의 내용이 바뀌어도 클래스의 버전이 자동생성된 값으로 변경되지 않는다
반응형
'study > 자바의정석' 카테고리의 다른 글
Chapter14. 람다와 스트림 (0) | 2021.08.21 |
---|---|
Chapter12. 지네릭스, 열거형, 애너테이션 (0) | 2021.06.06 |
Chapter11. 컬렉션 프레임웍(Collections Framework) (0) | 2021.06.02 |
Chapter09. java.lang 패키지와 유용한 클래스 (0) | 2021.05.22 |
Chapter08. 예외처리 exception handling (0) | 2021.05.17 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- Spring
- springboot
- docker pull limit
- 자바스크립트
- 스프링
- QuickTimePlayer
- IntelliJ
- 스프링부트
- clean code
- docker
- gasmask
- 코틀린
- ImagePullBackOff
- 클린코드
- back merge
- linuxkit
- k8s
- kotlin
- 자바
- JavaScript
- gradle
- cacheable
- 쿠버네티스
- docker for mac
- Kubernetes
- java
- ddd
- 도메인주도설계
- kotlin In Action
- 도커
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함