write(byte [] b, int off, int len) 사용

write(byte[] b) : 

write(byte[] b)를 통해 비트맵파일의 바이트갯수를 한번에 불러와 빠르게 파일을 빠르게 복사했지만,

바이트배열 생성시 1000바이트씩 읽고 1000바이트씩 써서 원본의 크기와 차이가 발생했다.

보통 파일의 값은 1000으로 딱떨어지지않는다.

마지막은 1000개가아니라 454만 출력하도록 해보자.

( 이전글 write(byte[] b) )

 

좌: 원본 / 우 : write(byte[] b) 사용시 

write(byte [] b, int off, int len) 를 이용해 마지막 454바이트까지 불러오게한다.

fos.write(buf,0,size); 넣으면 

0~1000,0~1000,...,0~1000개를 출력하다가 마지막 454개를 출력한다.

 

 

write(byte [] b, int off, int len)

 : b[off] 부터 len 개의 바이트를 출력 스트림으로 보냄.

OutputStream os = new FileOutputStream("파일 경로");

byte[] data = "가나다".getBytes();

os.write(data, 1,2) // "나다"만 출력

package ex3.array;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class CopyProgram {

	public static void main(String[] args) throws IOException {

		FileInputStream fis = new FileInputStream("res/aaa.bmp"); // 이미지파일 불러오기
		FileOutputStream fos = new FileOutputStream("res/img_copy.bmp"); // 이미지파일출력

		// 2. fis를 통해서 1 바이트를 읽어서 byte 변수 b에 담는다.
		// b의 값을 fos로 통해서 출력한다.
		int size = 0;
		
		byte[] buf = new byte[1000];
				
		while ((size = fis.read(buf)) != -1)
			fos.write(buf,0,size);


		fis.close();
		fos.close();

		System.out.println("복사완료");				
	}
}

 

 

+ Recent posts