char 단위 입출력

5BRack·2022년 7월 8일

자바란?

목록 보기
41/42

char 단위 입출력

  • char 단위로 입출력을 수행하는 기본 클래스는 Reader 와 Writer 추상 클래스이다.

Reader 와 Writer의 상속구조

  • Reader 클래스의 자식 클래스에는 FileReader, BufferedReader, InputStreamReader가 있고, Writer의 자식 클래스에는 FileWriter, BufferedWriter,OutputStreamWriter,PrintWriter가 있다.

Reader의 주요 메서드

  • int skip(long n) - n개의 char 스킵하기(실제 스킵된 char 개수를 리턴)
  • int read() - int(4byte)의 하위 2byte에 읽은 데이터를 저장해 리턴
  • int read(char[] cbuf) - 읽은 데이터를 char[] cubf에 저장하고, 읽은 char 개수를 리턴
  • abstract int read(char[] cbuf, int off, int len) - len 개수만큼 읽은 데이터를 char[] cbuf의 off위치부터 저장(추상 메서드)
  • abstract void close() - Reader의 자원 반환

Writer의 주요 메서드

  • abstract void flush() - 메모리 버퍼에 저장된 데이터 내보내기(실제 출력 수행)(추상 메서드)
  • void write(int c) - int(4byte)의 하위 2byte를 메모리 버퍼에 출력
  • void write(char[] cbuf) - 매개변수로 넘겨진 char[] cbuf 데이터를 메모리 버퍼에 출력
  • void write(String str) - 매개변수로 넘겨진 String 값을 메모리 버퍼에 출력
  • void write(String str, int off, int len) - str의 off 위치에서부터 len 개수를 읽어 메모리 버퍼에 출력
  • abstract void write(char[] cbuf, int off, int len) - char[]의 off 위치에서부터 len개수를 읽어 출력(추상 메서드)
  • abstract void close() - write의 자원 반환(추상 메서드)

Reader/Writer 객체 생성 및 활용하기

  • FileReader 와 FileWriter는 파일로부터 문자열을 일거나 파일에 문자를 저장하는 데 사용되는 클래스로 입출력을 char 단위로 수행한다.

FileReader 생성자

  • FileReader(File file) - 매개변수로 넘어온 file을 읽기 위한 Reader 생성
  • FileReader(String name) - 매개변수로 넘어온 name 위치의 파일을 읽기 위한 Reader 생성

FileReader 객체 생성

File readerwriterFile - new File("ReaderWriterFile.txt");
Reader reader = new FileReader(readerwriterFile);

FileWriter 생성자

  • FileWriter(File file) - 매개변수로 넘어온 file을 쓰기 위한 Writer 생성
  • FileWriter(File file,boolean append) - 매개변수로 넘어온 file을 쓰기 위한 Writer 생성,append = true 일때 이어쓰기, false일때 새로 덮어쓰기
  • FileWriter(String name) - 매개변수로 넘어온 file을 쓰기 위한 Writer 생성
  • FileWriter(String name,boolean append) - name위치의 파일을 쓰기 위한 Writer 생성,append = true 일때 이어쓰기, false일때 새로 덮어쓰기

FileWriter 객체 생성

File readerwriterFile - new File("ReaderWriterFile.txt");
Writer reader = new FileWriter(readerwriterFile);

BufferedReader / BufferedWriter

  • char 단위 입출력도 메모리 버퍼를 사용함으로써 속도를 향상할 수 있는 BufferedReader 와 BufferedWriter 클래스를 제공한다.

BufferedReader 생성자

  • BufferedReader(Reader in)
  • BufferedReader(Reader in, int size)

BufferedReader 생성

File bufferedReaderFile = new File("BufferedReaderFile.txt");
Reader reader = new FileReader(bufferedReaderFile);
BufferedReader br = new BufferedReader(reader);

BufferedReader 추가 메서드

  • readLine() - 1줄씩 읽어 문자열로 리턴하는 메서드
  • String 타입으로 리턴하다보니 마지막값은 null 이다.

BufferedWriter 생성자

  • BufferedWriter(Writer out)
  • BufferedWriter(Writer out, int size)

BufferedWriter 생성

File bufferedReaderFile = new File("BufferedReaderFile.txt");
Writer writer = new Writer(bufferedReaderFile);
BufferedWriter bw = new BufferedWriter(writer);

InputStreamReader/OutputStreamWriter로 Reader/Writer 객체 생성

  • 입출력 수행시, byte 단위로 입출력을 수행한 객체를 char 단위의 입출력 객체로 전환해야 될 때가 있다. 이때 사용하는 클래스가 InputStreamReaderOutputStreamWriter이다.
  • InputStreamReader : InputStream -> Reader
  • OutputStreamWriter : OutputStream -> Writer

InputStreamReader 생성자

  • InputStreamReader(InputStream in)
  • InputStreamReader(InputStream in, Charset cs)
  • InputStreamReader(InputStream in, String charsetName)

InputStreamReader 변환 예시

File inputStreamReaderTest = new File("test.txt");
InputStream is = new FileInputStream(inputStreamReaderTest);
Reader isr = new InputStreamReader(is,"UTF-8");

OutputStreamReader 생성자

  • OutputStreamReader(OutputStream out)
  • OutputStreamReader(OutputStream out, Charset cs)
  • OutputStreamReader(OutputStream out, String charsetName)

InputStreamReader 변환 예시

File OutputStreamWriterTest = new File("test.txt");
OutputStream os = new FileOutputStream(inputStreamWriterTest);
Writer osw = new OutputStreamReader(os,"UTF-8");

PrintWriter

  • PrintWriter 클래스는 PrinterStream과 같이 다양한 타입의 출력에 특화된 클래스로 자동 flush() 기능이 있다.

0개의 댓글