5-1.(6) 바이트기반 보조스트림

zhyun·2020년 9월 28일
0

HighJava

목록 보기
41/67

바이트기반 보조스트림

입출력의 성능향상을 해서 버퍼를 이용하는 보조스트림
기반(기본)스트림이 있어야 보조스트림 사용 가능

  • BufferedInputStream
    : Reader스트림에 버퍼기능을 제공하는 보조 스트림, 라인단위 읽기가능
  • BufferedOutputStream
    : Writer스트림에 버퍼기능을 제공하는 보조 스트림
  • 버퍼의 크기를 지정하지 않으면 기본적으로 버퍼의 크기가 8192(8kb)로 설정됨.

T11_BufferedIOTest

  • FileOutputStream : 파일에 데이터를 쓸때 '문자 단위'스트림으로 처리해주는 스트림
  • BufferedOutputStream : 버퍼기능 제공
  • flush() : 작업을 종료하기 전에 버퍼에 남아있는 데이터를 모두 출력
    close()시 자동으로 호출됨.
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()할때 자동으로 호출되서 굳이 안써도 된다.

profile
HI :)

0개의 댓글