본문 바로가기
자바

자바 BufferedOutputStream [북붙따라하기]

by 세상 모든 것 들은 그 자신을 위해 존재한다. 2020. 12. 31.

BufferedOutputStream   : byte단위로 파일을 기록 할때 사용하는 버퍼 스트림 입니다.

사용 예제 ) 코드를 복붙 하여 실행해 보시기 바랍니다.

설명은  주석과 코드 아랫부분에  있습니다.

import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;

public class Sample {

	public static void main(String[] args) {

		try {

////////////////// BufferedOutputStream을 이용한 파일에 내용을 기록하는 예제 입니다.

			// 기존의 파일이 없으면 만들어지고 있으면 덮어쓰게 되어 기존 파일내용이 지워진다.
			FileOutputStream fos = new FileOutputStream("c:/temp/java/test/test.txt");
			
////////////////////////기존 코딩에서 요기만 추가됨.	BufferedOutputStream를 적용	
			//직접 코드를 읽어 파일에 접속 하는 것보다 8192바이트의 버퍼를 이용해서 속도를 증가 시킨다.
			BufferedOutputStream bos = new BufferedOutputStream(fos);
			
			
			// 파일에 저장할 내용
			String strText = " 파일에 저장될 문자열 입니다.\n Hellow world !!";

			// 문자열을 바이트배열로 변환해서 파일에 저장한다.
			bos.write(strText.getBytes());

			// 사용이 끝나면 파일 스트림을 닫습니다.
			bos.close();
			fos.close();

////////////////////기록한 파일을 FileInputStream 을 이용해 출력하는 예제 입니다.

			// file open..
			FileInputStream fis = new FileInputStream("c:/temp/java/test/test.txt");

			// 파일의 내용을 byte단위로 읽어옵니다.그래서
			// 읽어서 저장할 버퍼 byte 배열 설정
			byte[] byteBuff = new byte[9999];

			// 파일을 읽고 읽은 크기를 nRLen 에 저장한다.
			int nRLen = fis.read(byteBuff);

			// 출력을 위해서 byte배열을 문자열로 변환
			String strBuff = new String(byteBuff, 0, nRLen);

			// 읽은 내용을 출력 합니다.
			System.out.printf("읽은 바이트수 : [%d]  \n읽은 내용 :  \n%s \n", nRLen, strBuff);

			// 사용이 끝나면 파일 스트림을 닫습니다.
			fis.close();

		} catch (Exception e) {
			System.out.println("읽을 파일이 없습니다. \n 읽을 파일을 만들어 준다음 실행 하세요.\n");
			System.out.println("c:/temp/java/test/test.txt\n");
		}

		
	}
}
//결과는 :

//읽은 바이트수 : [46]  
//읽은 내용 :  
// 파일에 저장될 문자열 입니다.
// Hellow world !! 

 

BufferedOutputStream   은 파일을 기록할때 8192byte의 버퍼를 두고 작업을 하기 때문데

속도가 굉장히 빨라 집니다.파일을 주로 다루는 프로그램을 만들때는 필수 입니다.

 

기존 코드 에서 한줄추가만 하면 속도가 향상이 됩니다.

8192byte를 넘지 않는 파일이라면 무조건 사용을 추천 드립니다.

 

기존코딩

	FileOutputStream fos = new FileOutputStream("c:/temp/java/test/test.txt");
	String strText = " 파일에 저장될 문자열 입니다.\n Hellow world !!";
	fos.write(strText.getBytes());
	fos.close();

 

 

적용후 코딩

FileOutputStream fos = new FileOutputStream("c:/temp/java/test/test.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);	//추가
String strText = " 파일에 저장될 문자열 입니다.\n Hellow world !!";
bos.write(strText.getBytes());	//fos를 bos롤 변경
bos.close();	//추가
fos.close();

 

설명끝.

 

 

728x90
반응형

댓글