입출력의 성능향상을 해서 버퍼를 이용하는 보조스트림
기반(기본)스트림이 있어야 보조스트림 사용 가능
T11_BufferedIOTest
public class T11_BufferedIOTest {
public static void main(String[] args) {
//입출력의 성능 향상을 위해서 버퍼를 이용하는 보조 스트림
//파일에 데이터를 쓸때 '문자 단위'스트림으로 처리해주는 스트림
FileOutputStream fos = null; //기반스트림
BufferedOutputStream bos = null; //(바이트기반)보조스트림
try {
fos = new FileOutputStream("d:/D_Other/bufferTest.txt");
//버퍼의 크기를 지정하지 않으면 기본적으로 버퍼의 크기가 8192(8kb)로 설정됨.
//버퍼의 크기가 5인 스트림 객체 생성 (버퍼사이즈 5byte)
bos = new BufferedOutputStream(fos, 5);
for (int i='1'; i <='9'; i++) {//숫자 자체를 문자로 지정하기 위해 ''사용함.
bos.write(i); //버퍼에 (5byte니까?) 2번 돌았다
}
//bos.flush();//작업을 종료하기 전에 버퍼에 남아있는 데이터를 모두 출력시킨다.
//(close시 자동으로 호출됨.) 12345, 6789(10) 버퍼가 아직 차지 않음 -> 강제write()
bos.close();
System.out.println("작업 끝...");
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
Console:
"d:/D_Other/bufferTest.txt"
=> bufferTest.txt가 생성이 되고
=> 그 메모장 안에 1~9까지 입력이 되어있다
=> 버퍼사이즈를 5byte로 잡았으니까 1~9까지 입력할때
=> (1,2,3,4,5) (6,7,8,9,(10)) 2바퀴 돌고 버퍼에 남아있는 데이터가
생겨서 flush() 사용 But close()할때 자동으로 호출되서 굳이 안써도 된다.