본문 바로가기

개발자노트

Resource 파일 복사하기 [buff]와 [FileIn/OutputStream] 응용

기본 매커니즘은 일반적인 [FileIn/Output]과 같다.

복사할 대상을 FileInputStream으로 특정 장소[buff]에 받아온 뒤 FileOutputStream으로 내보내 주는 것이다.

이 때 나오는 [buff]는 buffer를 뜻한다.

아래는 MyCoding 이라는 이미지를 MyCoding-복사본 으로 복사하기 예제이다.

package class03;

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

public class Test05 {
	public static void main(String[] args) {
		
		final String path = "C:\\Users\\test\\test\\resource\\"; // 경로를 상수화하여 실수를 줄인다.

		
		try {
			FileInputStream fis=new FileInputStream(path+"MyCoding.png");  // 경로+파일명.확장자를 정확하게 입력해준다.
			FileOutputStream fos=new FileOutputStream(path+"MyCoding-복사본.png"); // 같은 경로에 -복사분이 붙은 파일을 만들어준다.
			
			byte[] buff=new byte[50000]; // 이미지를 byte로 받을 수 있기 때문에 byte단위의 배열 생성, 오른쪽에는 할당크기
			
            int len; // length
            
			while((len=fis.read(buff))!= -1) { // fis에서 읽어오는데, len까지 만약 끝까지 못 읽어왔다면 계속해서 아래수행
				fos.write(buff,0,len); // buff 공간에, fos라는 곳에 데이터를 len까지만큼 넣을거다.
				System.out.println("로그: while문 수행횟수확인");
			}
			fos.flush();
			fos.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			System.out.println("이미지 파일 복사-붙여넣기 완료");
		}

	}

}