채팅
✉️ 채팅 프로그래밍
InputStreamReader 과 OutputStreamWriter
- 
👀 InputStreamReader - InputStreamReader은byte에서character로의 casting을 수행한다 효율적인 코드 작성법
- 
✍️ OutputStreamWriter - OutputStreamWriter은byte단위로 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
문자 출력 스트림의 최상위 추상 클래스이다.

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