본문 바로가기
JAVA/기초

[JAVA 기초] 15 자바 입출력 (2) [完]

by 푸_푸 2022. 8. 23.
728x90

*Reader

문자 단위로 읽는 스트림 중 최상위 스트림으로 다음 하위 클래스를 주요 사용

스트림 클래스 설명
FileReader 파일에서 문자 단위로 읽는 스트림 클래스
InputStreamReader 바이트 단위로 읽은 자료를 문자로 변환해 주는 보조 스트림 클래스
BufferedReader 문자로 읽을 때 배열을 제공하여 한꺼번에 읽을 수 있는 기능을 제공해 주는 보조 스트림
메서드 설명
int read() 파일로부터 한 문자를 읽고 반환
int read(char[] buf) 파일로부터 buf 배열에 문자를 읽음
int read(char[] buf, int off, int len) 파일로부터 buf 배열에 off 위치에서부터 len 개수만큼 문자를 읽음
void close() 스트림과 연결된 파일 리소스를 닫음

 

*FileReader

생성자 설명
FileReader(string name) 파일 이름 name(경로 포함)을 매개변수로 받아 입력 스트림을 생성함
FileReader(File f) File 클래스 정보를 매개변수로 받아 입력 스트림을 생성함

 

*Writer

문자 단위로 출력하는 스트림 중 최상위 스트림으로 다음 하위 클래스를 주로 사용

스트림 클래스 설명
FileWriter 파일에 문자 단위로 출력하는 스트림 클래스
OutputStreamWriter 파일에 바이트 단위로 출력한 자료를 문자로 변환해 주는 보조 스트림
BufferedWriter 문자로 쓸 때 배열을 제공하여 한꺼번에 쓸 수 있는 기능을 제공해 주는 보조 스트림
메서드 설명
void write(int c) 한 문자를 파일에 출력
void write(char[] buf) 문자 배열 buf의 내용을 파일에 출력
void write(char[] buf, int off, int len) 문자 배열 buf의 off 위치에서부터 len 개수의 문자를 파일에 출력
void write(String str) 문자열 str을 파일에출력
void write(String str, int off, int len) 문자열 str의 off 번째 문자부터 len 개수만큼 파일에 출력
void flush() 파일에 출력하기 전에 자료가 있는 공간(출력 버퍼)을 비워 출력
void close() 파일과 연결된 스트림을 닫음. 출력 버퍼도 비워짐

 

*FileWriter

생성자 설명
FileWriter(String name) 파일 이름 name(경로 포함)을 매개변수로 받아 출력 스트림 생성
FileWriter(String name,
boolean append)
파일 이름 name(경로 포함)을 매개변수로 받아 출력 스트림 생성
append 값이 true이면 파일 스트림을 닫고 다시 생성할 때 파일 끝에 이어서 씀
기본 값은 false
FileWriter(File, f) File 클래스 정보를 매개변수로 받아 출력 스트림 생성
FileWriter(File f,
boolean append)
File 클래스 정보를 매개변수로 받아 출력 스트림 생성
append 값이 true 이면 파일 스트림을 닫고 다시 생성할 때 파일 끝에 이어서 씀
기본 값은 false

 

*보조 스트림(=Wrapper 스트림)

입출력 대상이 되는 파일이나 네트워크에 직접 쓰거나 읽는 기능이 없음. 말 그대로 보조 가능을 추가하는 스트림

스스로는 입출력 기능이 없기 때문에 생성자의 매개변수로 다른 스트림을 받게 되면 자신이 감싸고 있는 스트림이 읽거나 쓰는 기능을 수행할 때 보조 기능을 추가함

 

*FilterInputStream과 FilterOutputStream

보조 스트림의 상위클래스로 모든 보조스트림은 FilterInputStream이나 FilterOutputStream을 상속받음

생성자 설명
protected FilterInputStream(InputStream in) 생성자의 매개변수로 InputStream을 받음
public FilterOutpurStream(OutputStream out) 생성자의 매개변수로 OutputStream을 받음

 

*InputStreamReader와 OutputStreamWriter

생성자 설명
InputStreamReader(InputStream in) InputStream 클래스를 생성자의 매개변수로 받아 Reader 생성
InputStreamReader(InputStream in,
Charset cs)
InputStream과 Charset클래스를 매개변수로 받아 Reader 생성
InputStreamReader(InputStream in,
CharsetDecoder dec)
InputStream과 CharsetDecoder를 매개변수로 받아 Reader 생성
InputStreamReader(InputStream in,
String charsetName)
InputStream과 String으로 문자 세트 이름을 받아 Reader 생성

 

*Buffered 스트림

내부적으로 8,192바이트 크기의 배열을 가짐

버퍼링 : 이미 생성된 스트림에 배열 기능을 추가해 더 빠르게 입출력을 실행할 수 있는 기능

스트림 클래스 설명
BufferedInputStream 바이트 단위로 읽는 스트림에 버퍼링 기능을 제공
BufferedOutputStream 바이트 단위로 출력하는 스트림에 버퍼링 기능을 제공
BufferedReader 문자 단위로 읽는 스트림에 버퍼링 기능을 제공
BufferedWriter 문자 단위로 출력하는 스트림에 버퍼링 기능을 제공
생성자 설명
BufferedInputStream(InputStream in) InputStream 클래스를 생성자의 매개변수로 받아
BufferedInputStream을 생성
BufferedInputStream(InputStrean in, int size) InputStream 클래스와 버퍼 크기를 생성자의 매개변수로 
받아 BufferedInputStream을 생성

 

*DataInputStream과 DataOutputStream

메모리에 저장된 0, 1 상태 그대로를 읽거나 씀

생성자 설명
DataInputStream(InputStream in) InputStream을 생성자의 매개변수로 받아 
DataInputStream을 생성
DataOutputStream(OutputStream out) OutputStream을 생성자의 매개변수로 받아 
DataOutStream을 생성

 

*직렬화와 역직렬화

- 직렬화 : 인스턴스의 어느 순간 상태를 그대로 저장하거나 네트워크를 통해 전송하는 것

인스턴스 내용을 연속 스트림으로 만드는 것

- 역직렬화 : 저장된 내용이나 전송 받은 내용을 다시 복원하는 것

생성자 설명
ObjectInputStream(InputStream in) InputStream을 생성자의 매개변수로 받아 
ObjectInputStream을 생성
ObjectOutputStream(OutputStream out) OutputStream을 생성자의 매개변수로 받아 
ObjectOutStream을 생성

-Serializable 인터페이스

직렬화 하겠다는 의도를 표시하기 위해 사용함

-transient 예약어

직렬화 될 수 없는 클래스가 인스턴스 변수로 있다거나 직렬화하고 싶지 않은 변수가 있을 때 사용

해당 변수는 직렬화되고 복원되는 과정에서 제외됨

 

*그 외의 입출력 클래스

- File 클래스

파일 자체의 경로나 정보를 할 수 있고, 생성할 수 있음

생성자 설명
File(String pathname) pathname을 매개변수로 받아 파일을 생성

 

-RandomAccessFile 클래스

파일 입출력을 동시에 할 수 있는 클래스

임의의 위치로 이동하여 자료를 읽을 수 있음

생성자 설명
RandomAcceeFile(File file,
String mode)
입출력을 할 File과 입출력 mode를 매개변수로 받음
mode에는 읽기 전용 "r"과 읽고 쓰기 기능인 "rw" 사용 가능
RamdonAcceeFile(String file,
String mode)
입출력을 할 File 이름을 문자열로 받고 과 입출력 mode를 매개변수로 받음
mode에는 읽기 전용 "r"과 읽고 쓰기 기능인 "rw" 사용 가능

 

728x90

댓글