본문 바로가기
개념

[JAVA의 정석] Chapter15

by cook_code 2024. 9. 8.
반응형

교재 목차

Chapter15. 입출력(I/O)

Chapter15. 입출력(I/O)

 

1. 자바에서의 입출력 

1-1. 입출력이란?

Inout과 Output의 약자로 입력과 출력, 간단히 줄여서 입출력이라고 한다.

입출력은 컴퓨터 내부 또는 외부의 장치와 프로그램간의 데이터를 주고받는 것을 의미한다.

1-2. 스트림(steram)

스트림이란 데이터를 운반하는데 사용되는 연결통로이다.

Java I/O 패키지

종류
IO 대상 기준
자료의 종류 기준
스트림의 기능 기준
FileInputStream
입력 스트림
바이트 단위
기반 스트림
FileReader
입력 스트림
문자 단위
기반 스트림
BufferedInputStream
입력 스트림
바이트 단위
보조 스트림
BufferedReader
입력 스트림
문자 단위
보조 스트림
FileOutputStream
출력 스트림
바이트 단위
기반 스트림
FileWriter
출력 스트림
문자 단위
기반 스트림
BufferedOutputStream
출력 스트림
바이트 단위
보조 스트림
BufferedWriter
출력 스트림
문자 단위
보조 스트림

바이트기반 스트림 - InputStream, OutputStream

스트림은 바이트 단위로 데이터를 전송하며 입출력 대상에 따라 다음과 같은 입출력스트림이 있다.

InputStream는 바이트를 읽어 지정된 문자 집합 내의 문자로 인코딩하며, OutputStream은 문자를 바이트들로 디코딩하여 스트림으로 출력한다.

보조 스트림

보조스트림은 실제 데이터를 주고받는 스트림이 아니기 때문에 데이터를 입출력할 수 있는 기능은 없지만, 스트림의 기능을 향상시키거나 새로운 기능을 추가할 수 있다.

문자기반 스트림 - Reader, Writer

기존의 스트림은 바이트 기반이어서 2바이트 문자를 처리하는데 문제가 있었음.

이를 보완하기 위해 문자기반 스트림이 만들어졌다.

 

2. 바이트 기반 스트림 

2-1. InputStream과 OutputStream

2-2. ByteArrayInputStream과 ByteArrayOutputStream

2-3. FileInputStream과 FileOutputStream

 

3. 바이트 기반 보조 스트림 

3-1. FileInputStream과 FilterOutputStream

3-2. BufferedInputStream과 BufferedOutputStream

3-3. DataInputStream과 DataOutputStream

3-4. SequenceInputStream

3-5. PrintStream

 

4. 문자 기반 스트림

4-1. Reader와 Writer

4-2. FileReader와 FileWriter

4-3. PipedReader와 PopeWriter

4-4. StringReader와 StringWriter

 

5. 문자 기반 보조 스트림

5-1. BufferedReader와 BufferedWriter

5-2. InputStreamReader와 OutputStreamWriter

 

6. 표준입출력과 FILE 

6-1. 표준입출력 - System.in, System.out, System.err

System.in - 콘솔로부터 데이터를 입력받는데 사용

System.out - 콘솔로 데이터를 출력하는데 사용

System.err - 콘솔로 데이터를 출력하는데 사용

6-2. 표준입출력의 대상변경 - setOut(), setErr(), setIn()

6-3. RandomAccessFile

6-4. File

 

7. 직렬화 

7-1. 직렬화란?

직렬화란 객체를 데이터 스트림으로 만드는 것.

객체에 저장된 데이터를 스트림에 쓰기 위해 연속적인 데이터로 변환하는 것.

반대로 스트림으로부터 데이터를 읽어서 객체를 만드는 것을 역직렬화라고 한다.

7-2. ObjectInputStream, ObjectOutputStream

직렬화(스트림에 객체를 출력)에는 ObjectOutputStream을 사용하고 역직렬화(스트림으로부터 객체를 입력)에는 ObjectInputStream을 사용한다.

7-3. 직렬화가 가능한 클래스 만들기 - Serializable, transient

직렬화하고자 하는 클래스가 java.io, Serializable 인터페이스를 구현.

7-4. 직렬화가능한 클래스의 버전관리

직렬화된 객체를 역직렬화 할 때는 직렬화 했을 때와 같은 클래스를 사용해야 한다.

반응형

'개념' 카테고리의 다른 글

[JAVA의 정석] Chapter16  (4) 2024.09.08
[JAVA의 정석] Chapter14  (2) 2024.09.08
[JAVA의 정석] Chapter13  (1) 2024.09.08
[JAVA의 정석] Chapter12  (1) 2024.09.08
[JAVA의 정석] Chapter11  (1) 2024.09.08