자바 I/O & NIO 네트워크 정리 5: 문자 단위 IO 클래스

0

1. 🍕 Reader와 Write

Reader와 Write는 기본이 되는 추상 클래스로써, 객체가 될수없다.

1. InputStreamReader와 OutputStreamWriter

IO 클래스에서 중요한것은 생성자이다.
생성자에 따라 읽어들여야할 대상과 써야할 대상이 달라진다.
InputStreamReader는 바이트 단위로 읽어들이는 InputStream을 통해 데이터를 읽어 들여 문자 단위로
읽어들이는 방식으로 변형한다는 것이며, OutputStreamWriter는 바이트 단위로 쓰는 OutputStream을
이용해서 바이트 단위로 변형한다는것을 의미한다.

2. 문자단위로 파일 내용을 읽어 들여 화면에 출력하기

내용을 읽으려고 FileInputStream을 사용하고, 화면에 출력하려고 Systeam.out(PrintStream)을 사용할 것이다.


FileInputStream fis = null;
InputStreamReader isr = null;
OutputStreamWriter osw = null;
try{
	fis = new FileInputStream();
    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);
    }
   

FileInputStream을 통해서 읽어 들이는 InputStreamReader의 생성과 System.out을 통해
출력하는 OutputStreamWriter를 생성한다.

3. 🍟 FileReader와 FileWriter

FileReader와 FileWriter는 InputStreamReader와 OutputStreamWriter 와 거의 유사하나
문자단위로 입출력을 수행한다.

1. FileReader와 FileWriter를 이용한 텍스트파일 복사

FileReader fr = null;
FileWriter fw = null;
try{
	fr = new FileReader();
   fw = new FileReader();
     char[] buffer = new char[512];
   int readcount = 0;
   while((readcount= fr.read(buffer)) != -1){
   	fw.write(buffer,0,readcount);
   }

}

4. 🌭 BufferedReader와 BufferedWriter

이름 그대로 Buffer에 있는 IO클래스다.
BufferedReader의 경우에 한 줄씩 읽어 들이는 readLine이라는 메소드가 있기 때문에 한줄씩
읽어 들이기에도 유리하다.
다만 BufferedWriter의 경우, 반드시 flush를 호출해줘야한다.

1. 파일 복사 프로그램 개선

FileReader와 FileWriter는 버퍼가 없기때문에 병목현상이 발생할수 있다. 그렇기에 버퍼를 추가할것이다.

  FileReader fr = null;
  BufferedReader br = null;
 FileWriter fw = null;
 BufferedWriter bw = null;

try{
fr = new FileReader(args[0]);
br = new BufferedReader(fr);
fw = new FileWriter(args[0]);
bw = new FileReader(fw);
}

FileReader를 BufferedReader로 감싸므로써 Buffer를 가진것처럼 해주었다.

profile
쉽게 가르칠수 있도록 노력하자

0개의 댓글