1. 스트림(Stream)
2. 입출력 방법
2.1 Stream(스트림) - 데이터의 논리적인 흐름
2.2 byte 단위 입출력(한글은 2byte가 한글자로 구성됨)
가) InputStream (입력스트림)
나) OutputStream (출력스트림)
3.3 문자 단위 입출력
가) InputStreamReader
나) OutputStreamWriter
3.4 buffer를 이용한 입출력
가) BufferedReader
나) BufferedWriter
3. 입출력 스트림 계층 구조
13;45
4. Unicode와 ASCII code
4.1 유니코드(Unicode)
16비트(2바이트) 기반의 다국적 문자 체계
전세계 대부분의 문자를 수용 : 다국어 처리에 효과
4.2 미국정보교환표준부호(American Standard Code for Information Interchange; ASCII)
8비트(1바이트) 코드 체계
5. 문자 입출력 스트림 구조
18;13
6. 버퍼 입출력
6.1 버퍼(buffer)
데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역
입출력 속도 향상을 위해 버퍼 사용
6.2 버퍼 플러시(buffer flush) : 버퍼에 남아 있는 데이터를 출력시킴(버퍼를 비우는 동작)
6.3 버퍼를 이용한 입력
BufferedReader
6.4 버퍼를 이용한 출력
BufferedWriter
7. 표준 입출력
7.1 프로그램이 시작되면 입출력을 위한 객체가 자동으로 생성됨
7.2 키보드 입력 관련 객체 : System.in
7.3 모니터 출력 관련 객체 : System.out
8. 객체 직렬화(object serialization)
객체 자체를 입출력하는 방법=객체 스트림 방식
객체를 바이트 단위로 나누어 입출력이 가능하도록 하는 과정
image
9. 비순차 접근 파일(RandomAccessFile)
9.1 비순차적 접근 가능
스트림 객체는 순차적 접근만 가능
9.2 접근이 필요한 위치에 직접 파일 포인터를 이동시킬 수 있기 때문에 큰 크기의 파일 접근이 유리함
9.3 파일 접근 속성
읽기 전용 "r"
읽기 쓰기 "rw"
19.10 실습예제
19.10.1 InputStreamExam.java
```
* 예외 처리
선택적 예외 처리
필수적 예외 처리
입출력, 멀티스레드, DB, 네트워크
19.10.2 ReaderExam.java
```
byte 1바이트(8bit)
-128~127
char 2바이트(16bit)
0~65535
19.10.3 BufferedReaderExam.java
19.10.4 FileExam.java 5050
```
* 데이터와 메타데이터
meta data: 데이터를 설명하는 데이터
19.10.5 Directory.java
19.10.6 FileRead.java 011250
19.10.7 FileWrite.java
19.10.8 FileCopy.java
```
한글윈도우의 기본 인코딩 방식 : ms949(euc-kr) 한글을 2바이트로 저장
리눅스의 기본 인코딩 방식 : utf-8
이클립스에서 utf-8 한글을 3바이트로 저장
19.10.9 DataStream.java
19.10.10 RandomFile.java
```
* 순차적인 접근 파일
* 비순차적인 접근 파일
```String과 StringBuilder의 가장 큰 차이는?
* String : 불변성(immutable)
* StringBuilder(StringBuffer) : 가변(mutable)
```파일포인터 설명
hello java
hello world
=> hello java\r\nhello world
0123456789...
```한글처리설명
바이트 배열 byte[]
스트링 - char[]
기본인코딩 iso-8859-1 서유럽언어
한글
ms949 2바이트
utf-8 3바이트 ex. 학생