자바/자바 입문 공부일지

자바 기초 공부 일지 52. 버퍼 (작성 수정중)

Tomitom 2022. 11. 8. 10:12
반응형

 

 

 

InputStream in = new FileInputStream("date.dat"); // 입력 스트림 생성

int data = in.read(); // 데이터 읽어 들임

 

 

 

출처 : 윤성우의 열혈 자바 프로그래밍 공부집

 

OutputStream out = new FileOutputStream("date.dat"); // 출력 스트림 생성

out.write(7); // 데이터 7을 파일에 전달

 

 

 

 

 

 

버퍼 : 스트링 중간에 존재해서 데이터를 한꺼번에 데려오는 수레같은 역할을 함. 

이동횟수가 줄기 때문에 속도 개선 효과를 가져다줌 

 

파일 대상 입출력 스트림을 생성한 이후에는 반드시 닫아주어야 한다. 

 

 

 

package day21;

import java.io.*;

/* 
 * 파일 입출력 시 존재하지 않는 파일에 출력을 하기 위한 스트림을 형성하면,
 * 파일이 새롭게 만들어진다. 그러나 입력 스트림은 존재하지 않는 파일에 대해 형성할 수 없다. 
 */
public class IOstream {

	public static void main(String[] args) throws IOException {
		
		OutputStream os = new FileOutputStream("data.dat");
		// 아웃풋 스트림이라는 추상 클래스로부터 만들어진 클래스 (다형성 기반)
		
		os.write(7);
		os.close();
	
	}

}

 

 

 

 

package day21;

import java.io.*;

/* 
 * 파일 입출력 시 존재하지 않는 파일에 출력을 하기 위한 스트림을 형성하면,
 * 파일이 새롭게 만들어진다. 그러나 입력 스트림은 존재하지 않는 파일에 대해 형성할 수 없다. 
 */

public class IOstream {

	public static void main(String[] args) throws IOException {
		
		InputStream os = new FileInputStream("data.dat");
		// 아웃풋 스트림이라는 추상 클래스로부터 만들어진 클래스 (다형성 기반)
		System.out.println(os.read());
		os.close();
	
	}

}

 

 

 

버퍼를 이용하면 입출력 시 속도 개선 효과가 있다. 

 

package day21;

import java.io.*;

/* 
 * 파일 입출력 시 존재하지 않는 파일에 출력을 하기 위한 스트림을 형성하면,
 * 파일이 새롭게 만들어진다. 그러나 입력 스트림은 존재하지 않는 파일에 대해 형성할 수 없다. 
 */

public class IOstream {

	public static void main(String[] args) throws IOException {
		
	try(OutputStream os = new FileOutputStream("cpy.dat");
			InputStream is = new FileInputStream("data.dat")){
		
		byte[] buff = new byte[1024]; 
		
		int data; 
		while(true) {
			data = is.read(buff);
			if(data== -1) {
				break; 
			}
			os.write(buff, 0, data); 
			}
		}
	}
}
반응형