개인참고자료/자바(네트워크)

문자 스트림 - 파일 내용 읽어 화면 출력(InputStreamReader, OutputStreamWriter)

경진 2008. 7. 13. 23:47
문자 단위로 파일 내용을 읽어 들여 화면에 출력하기

파일의 내용을 문자 단위로 읽어 들인 후, 문자 단위로 화면에 출력하는 예제다.
파일의 내용을 읽으려고 FileInputStream을 사용하고, 화면에 출력하려고 System.out(PrintStream)을 사용한다.
그렇지만 각각의 클래스들은 바이트 단위의 IO 클래스다. 따라서 문자 단위로 입출력을 하려면 InputStreamReader와 OutputStreamWriter를 이용해서 문자 단위 입출력으로 변환해야 한다.

import java.io.*;

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

            fis = new FileInputStream(args[0]);
            isr = new InputStreamReader(fis);
            osw = new OutputStreamWriter(System.out);

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

            char[] buffer = new char[512];
            int readcount = 0;
            while((readcount = isr.read(buffer)) != -1){
                osw.write(buffer,0,readcount);
            }

InputStreamReader에 있는 read() 메소드를 이용해서 문자 배열 형태로 읽은 후 OutputStreamWriter에 있는 write() 메소드를 이용해서 문자 배열 값을 출력한다. InputStreamReader는 내부적으로 FileInputStream을 이용해서 읽어 들이고, OutputStreamWriter는 내부적으로 System.out을 이용해서 출력한다.