2021 Newlecture/JAVA
사진복사 / write(byte [] b, int off, int len) 이용해 출력
haileykim2014
2021. 3. 11. 00:31
write(byte [] b, int off, int len) 사용
write(byte[] b) :
write(byte[] b)를 통해 비트맵파일의 바이트갯수를 한번에 불러와 빠르게 파일을 빠르게 복사했지만,
바이트배열 생성시 1000바이트씩 읽고 1000바이트씩 써서 원본의 크기와 차이가 발생했다.
보통 파일의 값은 1000으로 딱떨어지지않는다.
마지막은 1000개가아니라 454만 출력하도록 해보자.
( 이전글 write(byte[] b) )
write(byte [] b, int off, int len) 를 이용해 마지막 454바이트까지 불러오게한다.
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("복사완료");
}
}