프로그래밍 언어/자바(JAVA)

자바(JAVA) - FileReader, FileWriter 파일 읽기, 쓰기

나아가는중 2021. 12. 21. 17:49
반응형

자바(JAVA) - FileReader, FileWriter 파일 읽기, 쓰기


자바에서 텍스트 파일을 읽고 쓰기 위한 FileReader와 FileWriter 클래스가 있습니다.

FileReader와 FileWriter 클래스는 문자 스트림으로 텍스트 파일을 읽고 쓰는데 사용됩니다.

 

자바의 입출력 스트림은 문자 스트림과, 바이너리 스트림 두 종류가 존재합니다.

문자 스트림은 문자만 입출력하는 스트림으로 문자가 아닌 다를 데이터는 스트림에서 처리하지 못함니다. 만약 동영상, 오디오 등의 바이너리 데이터를 읽고 쓴다면 바이너리 스트림을 사용하여야 합니다.

 

FileReader

FileReader는 파일 입력 스트림을 생성하고 파일을 열어 스트림과 연결합니다.

FileReader 객체가 생성될 때에 파일과 직접 연결을 합니다.

 

FileReader 생성자는 다음과 같이 5 종류가 있습니다.

FileReader(File file) 매개변수로 받은 파일을 읽는 FileReader를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileReader(FileDescriptor fd) 매개변수로 받은 파일 디스크립터를 읽는 FileReader를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileReader(File file, Charset charset) 매개변수로 받은 파일을 읽는 FileReader를 생성합니다.

매개변수로 받은 문자 인코딩(charset)을 사용합니다.
FileReader(String fileName) 매개변수로 받은 이름의 파일을 읽는 FileReader를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileReader(String fileName, Charset charset) 매개변수로 받은 이름의 파일을 읽는 FileReader를 생성합니다.

매개변수로 받은 문자 인코딩(charset)을 사용합니다.

지정된 경로명의 파일이 존재하지 않거나, 파일이 존재하지만 파일에 문제가 있어 열 수 없거나, 쓰기 전용 파일을 읽으려 할때에 스트림을 생성하는 생성자에 의해 FileNotFoundException이 발생합니다.

 

파일의 내용을 읽는 방법에는 4가지 종류가 있습니다.

int read() 한 문자를 읽어옵니다.

return 읽어온 문자, 스트림의 끝에 도달한 경우 -1
int read(char[] cbuf) 내부에서는 read(cbuf, 0, cbuf.length)를 호출합니다.
cbuf의 크기만큼 문자들을 읽어옵니다.

retrun 읽어온 문자들의 수, 스트림의 끝에 도달한 경우 -1
abstract int read(char[] cbuf, int off, int len) 지정한 위치(off)부터 길이(len)만큼의 문자들을 cbuf로 읽어옵니다.

retrun 읽어온 문자들의 수, 스트림의 끝에 도달한 경우 -1
int read(CharBuffer target) 지정한 문자 버퍼로 문자들을 읽어옵니다.

retrun 읽어온 문자들의 수, 끝에 있는 경우 -1

 

파일 읽기가 끝났다면 close() 함수를 사용하여 닫아야합니다.

close() 함수를 통해 스트림을 닫고 연결된 시스템 리소스를 해제합니다.

파일을 닫지않고 여러 파일이나 동일한 파일을 연다면 문제가 발생할 수 있습니다.

 

디스크 오동작, 파일이 중간에 깨진 경우, 디스크 공간이 모자라서 파일 입출력이  불가능한 경우 파일 읽기, 쓰기, 닫기를 하는 동안 IOExcetion이 발생할 수 있습니다.

read(), close()에서 I/O 에러가 발생할 시 IOExcetion이 발생하며 예외처리를 해주어야 합니다.

 

FileWriter

FileWriter는 파일 출력 스트림을 생성하고 파일을 열어 스트림과 연결합니다.

기본 버퍼 크기를 사용하여 텍스트 파일에 텍스트를 씁니다. 지정된 문자 인코딩이나 기본 문자 인코딩을 사용합니다.

 

파일을 사용할 수 있는지 여부는 기본 플랫폼에 따라 다릅니다.

일부 플랫폼에서는 한 번에 하나의 FIleWriter만 파일 출력을 위해 열어 사용할 수 있습니다.

 

FileWriter 생성자는 다음과 같이 8 종류가 있습니다.

FileWriter(File file) 매개변수로 주어진 파일로 FileWriter객체를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileWriter(FileDescriptor fd) 매개변수로 주어진 파일디스크립터로 FileWriter객체를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileWriter(File fd, boolean append) 매개변수로 주어진 파일로 FileWriter객체를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.

append는 이어쓰기 여부입니다.
FileWriter(File file, Charset charset) 매개변수로 주어진 파일로 FileWriter객체를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileWriter(File file, Charset charset, boolean append) 매개변수로 주어진 파일로 FileWriter객체를 생성합니다.

매개변수로 받은 문자 인코딩(charset)을 사용합니다.

append는 이어쓰기 여부입니다.
FileWriter(String filename) 매개변수로 주어진 파일경로로 FileWriter객체를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.
FileWriter(String filename, boolean append) 매개변수로 주어진 파일경로로 FileWriter객체를 생성합니다.

플랫폼의 기본 문자 인코딩(charset)을 사용합니다.

append는 이어쓰기 여부입니다.
FileWriter(String filename, Charset charset) 매개변수로 주어진 파일경로로 FileWriter객체를 생성합니다.

매개변수로 받은 문자 인코딩(charset)을 사용합니다.
FileWriter(String filename, Charset charset, boolean append) 매개변수로 주어진 파일경로로 FileWriter객체를 생성합니다.

매개변수로 받은 문자 인코딩(charset)을 사용합니다.

append는 이어쓰기 여부입니다.

 

 

파일의 내용을 쓰는 방법에는 5가지 종류가 있습니다.

void write(int c) 한 문자를 씁니다.
void write(char[] cbuf) cbuf의 내용을 씁니다.
void write(char[] cbuf, int off, int len) cbuf의 내용을 오프셋(off)부터 길이(len)만큼 씁니다.
void write(String str) 문자열의 내용을 씁니다.
void write(String str, int off, int len) 문자열의 내용을 오프셋(off)부터 길이(len)만큼 씁니다.

 

 

 

반응형