✉️ 채팅 프로그래밍

InputStreamReaderOutputStreamWriter

  • 👀 InputStreamReader - InputStreamReaderbyte 에서 character로의 casting을 수행한다 효율적인 코드 작성법

  • ✍️ OutputStreamWriter - OutputStreamWriterbyte단위로 write하는 outputstream을 이용해 character단위로 쓰도록 변형한다.

import java.io.*;

public class StreamReaderTest {
  public static void main(String[] args) {
    if(args.length != 1) {
      System.out.println("사용법 : java StreamReaderTest file_name");
      System.exit(0);
    }

    FileInputStream    fis  = null;
    InputStreamReader  isr  = null;
    OutputStreamWriter osw  = null;

    try {
      fis = new FileInputStream(args[0]);
      isr = new InputStreamReader(fis);
      osw = new OutputStreamWriter(System.out);
      char[] buffer = new char[512];

      int readcount = 0;
      while((readcount = isr.read(buffer)) != -1) {
        osw.write(buffer, 0, readcount);
      }
    } catch(Exception ex) {
      System.out.println(ex);
    } finally {
      try {
        fis.close();
        isr.close();
        osw.close();
      } catch(Exception e) {}
    }
  }
}

❓ 왜 바이트 단위로 읽어내는지?

- InputStream 에서 read()메소드의 파라미터로 올 수 있는 자료형은 byte b[] 뿐이다 - Java의 Char 와 String의 타입의 경우 Characters로 취급 되어진다.

이말은 Char / String를 저장하려면 char 단위로 읽고 쓰는 Reader 와 Writer를 사용해야 한다.

`InputStreamReader` 과 `OutputStreamWriter`는
이 문제를 해결하기 위해서 byte 단위로 데이터를 읽어 Char형태로 변화 시켜 연결 고리 역할을 하는것이다.

Writer

문자 출력 스트림의 최상위 추상 클래스이다.

enter image description here

Class description
Writer 출력하는 데이터를 문자열로 취급
BufferedWriter 버퍼를 사용해 문자 단위로 출력
OutputStreamWriter 출력스트림 객체를 받아 생성