고급 JAVA

JAVA - 입출력 -성능향상을 위한 보조스트림 예제

햄찌개 2020. 9. 29. 10:25

 

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인 스트림 객체생성
			bos = new BufferedOutputStream(fos,5);//5개가 차면 넘겨주기 떄문에 9byte는 2번 IO작업 하면된다.
			for (int i = '1'; i <= '9'; i++) {//숫자 자체를 문자로 지정하기 위해 ''사용
				bos.write(i);
			}
			
			//9번 반복하고 버퍼가 5이면 5개 채워서 한번 IO하고 두번째는 4개만 차니깐 IO를 안해서 flush()로 마지막에 IO
			bos.flush();// 작업을 종료하기 전에 버퍼에 남아있는 데이터를 모두 출력시켜야한다.		
						// (close 시 자동 호출)
			
			bos.close();
			System.out.println("작업 끝 ....");
			
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		
	}
}

 


 (문자기반의 Buffered스트림 사용예제)

public class T12_BufferedIOTest {

	public static void main(String[] args) {
		try {
			// 이클립스에서 만든 자바프로그램이 실행되는 기본위치는 해당'프로젝트폴더'가 기본 위치가 된다.
			FileReader fr = new FileReader("src/kr/or/ddit/basic/T11_BufferedIOTest.java");

			/*//버퍼없이 할떄 
			int c;
			while ((c = fr.read()) != -1) {
				System.out.print((char) c);
			}
			fr.close();*/
			
			//한줄씩 읽을수 있도록 해주는 readLine을 이용하기 위해 BufferedReader 사용
			BufferedReader br = new BufferedReader(fr);
			String temp ="";
			for (int i = 1; (temp =br.readLine())!=null; i++) {//readLine() 한줄씩 읽어옴 다읽으면 null
				System.out.printf("%4d : %s\n",i,temp);
			}
			br.close();
			
			
			

		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}