자바(Java)/JAVA 2SE

Buffered Stream(버퍼 스트림)

본클라쓰 2010. 12. 2. 13:39

 일반적인 I/O 스트림은 데이터를 읽고 쓰기 위해 액세스 정보를 계속해서 사용하기 때문에 효율성이 좋지 못하다. 자바에서는 이런 오버헤드(Overhead)문제를 해결하기 위해 버퍼가 달린 I/O 스트림을 구현했다. 버퍼를 사용한 입력 스트림은 버퍼가 다 찰 때까지 데이터를 받아 한번에 처리한다. 또한, 출력 스트림은 버퍼에 데이터가 다 차야 출력을 시작한다. 오직 버퍼가 다 찰 때 한번만 액세를 시도한다.

 

 문자 데이터를 처리하기 위한 버퍼 스트림은 다음과 같다.

 

inputStream = new BufferedReader(new File Reader("test.txt"));
outputStream = new BufferdWriter(new FileWriter("out.txt");

 

 문자 데이터는 문장의 끝을 나타내는 터미네이터라고 부는 기호가 있는데 대표적인 것이 '\n'과 '\r'이다. 이 구문을 통해 문자열을 구분하며 터미네이터를 사용하여 문자 데이터를 읽는 방법으로는 readLine() 메소드를 사용한다.

  

import java.io.FileReader;
import java.io.FileWriter;
import java.io.BufferedReader;
import java.io.PrintWriter;
import java.io.IOException;

 

public class CopyLine {
    public static void main(String[] args) throws IOException {
        BufferedReader inputStream = null;
        PrintWriter outputStream = null;

 

        try {
            inputStream = new BufferedReader(new FileReader("test.txt"));
            outputStream = new PrintWriter( new FileWriter("out.txt"));

            String str;


            while ( (str = inputStream.readLine()) != null) {

                outputStream.println(str);
             }

        } finally {
            if (inputStream != null) { inputStream.close();}
            if (outputStream != null) {outputStream.close();}
        }
    }
}