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("복사완료");
}
}
'2021 Newlecture > JAVA' 카테고리의 다른 글
2차원배열 / 열에서 최대값 구하기/ 해당 인덱스값구하기/값변화 차이 (0) | 2021.03.16 |
---|---|
2차원배열/ 코로나 검사진행자 누적수 구하기/ 열의 합 구하기 (0) | 2021.03.15 |
코로나 검사 누적수 구하기 / 반복문 / 문자열구분 (0) | 2021.03.12 |
String클래스 / 문자열배열 섞기/ 문자열비교 / 문자열정렬 (0) | 2021.03.11 |
배열 / FileInputStream / Scanner()/ hasNextLine() / while() (0) | 2021.03.10 |
배열/ 랜덤값 radom()/ 섞기 / 버블정렬(가장 큰 숫자찾기) (0) | 2021.03.10 |
File Stream이용해 파일복사하기/ read(byte[] b)/ 배열과 for문 / (0) | 2021.03.09 |
if / switch / 중첩된 제어구조 벗어나기 /do while (0) | 2021.03.08 |