티스토리 뷰

study/자바의정석

Chapter.15 입출력 I/O

pansy0319 2021. 6. 13. 04:44
반응형

[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를 정의해주면 클래스의 내용이 바뀌어도 클래스의 버전이 자동생성된 값으로 변경되지 않는다
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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
글 보관함