일반적인 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.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();}
}
}
}
'자바(Java) > JAVA 2SE' 카테고리의 다른 글
숫자의 포맷을 지정하는 NumberFormat 클래스 (0) | 2010.12.01 |
---|---|
수학에 관련된 Math 클래스 (0) | 2010.12.01 |
숫자 출력 포맷 결정하기 (0) | 2010.12.01 |
자바의 숫자 객체인 Number 클래스(기본숫자형의 Wrapper객체) (0) | 2010.12.01 |
반복문 - for 문 (0) | 2010.12.01 |