다음 코드는 바이트로 파일을 읽어들인 것을 문자단위 처리 클래스로 받아서 다시 바이트 단위클래스에게 출력을 위임하는 예제 코드이다.

 

, 파일의 내용을 읽기위해 FileInputStream(à바이트처리)을 사용하고 화면에 읽어들인 내용을 출력하기 위하여 System.out(PrintStream)(à바이트처리)을 사용한다. 이때 파일의 내용을 읽기위해 문자단위 클래스인 InputStreamReader(à 문자처리)의 메소드를 사용할 것이다.


바이트 단위  IO클래스와 문자단위 IO클래스간의 차이는 바이트단위이냐 또는 문자 단위의 처리이냐 차이뿐인데 중요한 것은 바이트 단위  IO클래스와 문자단위 IO클래스는 완전히 따로 사용하지 않는 다는 이다.

 

문자단위  IO 클래스에는 InputStreamReader OutputStreamWriter클래스가 있는데, 두가지 클래스는 바이트 단위  IO클래스와 문자단위 IO클래스 간에 다리 역할을 하므로써 서로 협력해서 사용 있게 해준다.

 

package ch5;

 

import java.io.FileInputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

 

public class StreamReaderTest {

 

       public static void main(String[] args) {

              if (args.length != 1) {

                     System.out.println("사용법 : java StreamReaderTest 파일명");

                     System.exit(0);

              }// if

 

              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) {

                     }

              }

 

       }

}

 

 

위의 예제에서는InputStreamReader 바이트 단위로 읽어 들이는InputStream 통해 데이터를 읽어들여 문자 단위로 읽어 들이는 방식으로 변형한다는 것이며, OutputStreamWriter 바이트단위로 쓰는 OutputStream 이용해서 문자 단위로 쓰는 것을 바이트 단위로 쓰도록 변형한다는 것을 의미한다.










 


Posted by Steven J.S Min
,