채팅
✉️ 채팅 프로그래밍
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 | 출력스트림 객체를 받아 생성 |