InputStream.transferTo()
한 번의 호출로 InputStream을 OutputStream에 복사합니다.
코드 비교
✕ Java 8
byte[] buf = new byte[8192];
int n;
while ((n = input.read(buf)) != -1) {
output.write(buf, 0, n);
}
✓ Java 9+
input.transferTo(output);
이 코드에 문제가 있나요? 알려주세요.
모던 방식이 더 나은 이유
한 줄
전체 읽기/쓰기 루프를 단일 메서드 호출로 대체합니다.
최적화됨
내부 버퍼 크기가 성능을 위해 조정됩니다.
버그 없음
버퍼 관리에서 오프바이원 오류가 없습니다.
이전 방식
수동 복사 루프
모던 방식
transferTo()
JDK 버전
9
난이도
초급
JDK 지원
InputStream.transferTo()
사용 가능
JDK 9 (2017년 9월) 이후 널리 사용 가능
동작 원리
transferTo()는 입력 스트림의 모든 바이트를 읽어 출력 스트림에 씁니다. 버퍼 관리나 루프가 필요 없습니다. 최적화된 내부 버퍼를 사용합니다.
관련 문서