01. 자바 입출력과 스트림
02. 입출력 스트림의 종류
03. 바이트 기반 스트림
04. 문자 기반 스트림
05. 보조 스트림
06. File 클래스
07. 직렬화
<자바 입출력과 스트림>
프로그램은 데이터를 외부에서 입력받아 처리하고 출력하는 구조
들어오는 모든 값 = input
출력되는 값 = output
=> 이런 입출력을 처리하기 위해 자바는 별도의 I/O 패키지를 제공함.
=> 이렇게 자바 프로그래밍이 디스크에 접근해 데이터를 주고받는 작업을 도와주는 통로를
"스트림" 또는 "가상통로"라 한다
자바 입출력 스트림의 주요 특징
- 스트림은 입출력 장치와 자바 프로그램 간의 연결 통로로 스트림의 양 끝에서 전달이 이루어진다.
- 단방향 통신으로 입력스트림과 출력스트림을 별도로 사용하며 FIFO 구조를 이루고 있다.(큐)
-연속형 데이터 흐름으로 입출력 진행 시 다른 작업을 할 수 없는 상태가 됨
-입출력 대상을 변경하기 편하며, 동일한 프로그램 구조를 유지할 수 있음
<입출력 스트림의 종류>
바이트 기반 스트림 | 문자(char) 기반 스트림 |
-바이트 단위로 파일을 읽고 출력할 떄 사용 -모든 타입 데이터 가능 |
-문자 단위로 파일을 읽고 출력할 때 사용 -문자 데이터만 가능 |
<바이트 입력 스트림>
< InputStream의 주요 메서드>
메서드 | 설명 |
int read() | 문자를 1바이트씩 읽고 반환 더 이상 읽을 문자가 없으면 -1 반환 |
int read(byte[] b) | 매개변수로 주어진 배열에 읽은 문자를 저장하고 실제로 읽은 수만큼 반환 더 이상 읽을 문자가 없으면 -1 반환 |
int read(byte[], int offset, int len) | 매개변수로 주어진 배열에 정해진 범위만큼 읽어서 저장 시작위치(offset), 길이 (len) |
int available() | 스트림으로부터 읽어올 수 있는 데이터의 크기를 반환 |
close() | 스트림 사용을 종료하고 자원을 반환 |
주의) 바이트 기반으로 한글을 읽는다면 read(byte [] buffer) 메서드를 사용해야 한다.
-FileInputStream : 파일에서 바이트 단위로 자료를 읽어 들일 떄 사용하는 스트림
new FileInputStream(경로/ 파일명);
<바이트 출력 스트림>
메서드 | 설명 |
int write(int b) | 1바이트 출력 |
int write(byte[] b) | 매개변수로 주어진 배열의 모든 바이트 출력 |
int write(byte[] b, int offset, int len) | 매개변수로 주어진 배열에 정해진 범위만큼 읽어서 출력 시작위치(offset), 길이(len) |
void flush() | 출력 버퍼에 잔류하는 모든 내용 출력 |
close() | 스트림 사용을 종료하고 자원 반환 |
-FileOutStream
new FileOutStream(경로/파일명, 이어쓰기 옵션);
이어쓰기 옵션) true면, 기존파일에 이어서 내용을 추가, false면 기존내용무시 새로씀 (디폴트는 F)
<문자 기반 스트림>
: 문자를 처리하는 char형의 크기는 2바이트로 별도의 처리를 하지 않으면 정상적으로 읽지 못하는 경우가 있음
이때 문자기반 스트림을 사용하면 간단하게 문자를 처리할 수 있음
<문자 입력 스트림>
메서드 | 설명 |
int read() | 1개의 문자를 읽고 반환 더 이상 읽을 문자가 없으면 -1을 반환 |
int read(char[] cbuf) | 매개변수로 주어진 배열에 읽은 문자를 저장하고 읽은 수만큼 반환 더 이상 읽을 문자가 없으면 -1을 반환 |
int read(char[] cbuf, int offset, int len) | 매개변수로 주어진 배열에 정해진 범위만큼 읽어서 저장 |
close() | 스트림 사용을 종료하고 자원을 반환 |
<문자 출력 스트림>
메서드 | 설명 |
int write(char[]) | 단일 문자 출력 |
int write(char[]) | 매개변수로 주어진 배열의 모든 문자 출력 |
int write(String) | 문자열을 매개변수로 주어진 문자열 출력 |
int write(char[], int offset, int len) | 매개변수로 주어진 배열에 정해진 범위만큼 읽어서 출력 |
void flush() | 출력 버퍼에 잔류하는 모든 내용을 출력 |
close() | 스트림 사용을 종료하고 자원 반환 |
<보조 스트림>
-기반 스트림 : 대상에 직접 자료를 읽고 쓰는 스트림
-보조 스트림 : 직접 읽고 쓰는 기능없이 기반 스트림에 추가로 사용할 수 있는 스트림
-보조스트림 연결하기
보조 스트림 변수명 = new 보조 스트림 (기반 스트림);
-성능향상 보조 스트림
- 바이트 기반 스트림 : BufferedInputStream과 BufferedOutputStream
- 문자기반 스트림 : BufferedReader와 BufferedWriter
<File클래스>
: 자바 패키지에서 제공하는 파일클래스는 파일 및 폴더에 대한 경로명, 파일크기, 타입, 날짜 등의 속정 정보를 제공하며, 파일 생성, 삭제, 이름 변경 등의 파일관리 작업을 지원하기 위한 메서드로 구성되어 있음.
<파일클래스의 대표메서드>
메서드 | 설명 |
boolean delete() | 파일 또는 폴더 삭제 |
boolean createNewFile() | 새로운 파일이나 내용이 없는 파일 생성 |
boolean mkdir() | 경로의 계층이 여러 개 있어도 최상위 경로의 폴더만 생성 |
boolean mkdirs() | 경로 상의 필요한 모든 폴더생성 |
boolean exists() | 폴더 또는 파일의 존재 여부 반환 |
boolean isFile() | 파일 여부 반환 |
boolean isDirectory() | 폴더 여부 반환 |
long length() | 파일크기 반환 |
boolean canWrite() | 쓰기 가능한 파일 여부 반환 |
boolean canRead() | 읽기 가능한 파일 여부 반환 |
String getPath() | 상대경로 반환 |
String getAbsolutePath() | 절대경로 반환 |
<직렬화>
■ 직렬화 - 자바 시스템 내부에서 사용하는 객체나 데이터를 외부의 시스템에서 사용할 수 있도록 바이트 단위의 데이터로 변환시키는 기술
즉, 클래스 형태의 데이터를 바이트 단위로 변환
■ 역직렬화 - 바이트 단위로 변환된 데이터를 다시 객체 형태로 변환하는 것
'JAVA > 교재' 카테고리의 다른 글
오라클로 배우는 데이터베이스 입문 01-2. 데이터모델 (0) | 2025.03.14 |
---|---|
JAVA 18 - 스레드 (0) | 2025.01.25 |
JAVA 17 - 람다식 (0) | 2025.01.24 |
JAVA 16 - 컬렉션 프레임워크 (0) | 2025.01.23 |
JAVA 15- 기본 API 클래스 (1) | 2025.01.22 |