I/O 초급

한 번의 호출로 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
난이도
초급
InputStream.transferTo()
사용 가능

JDK 9 (2017년 9월) 이후 널리 사용 가능

transferTo()는 입력 스트림의 모든 바이트를 읽어 출력 스트림에 씁니다. 버퍼 관리나 루프가 필요 없습니다. 최적화된 내부 버퍼를 사용합니다.

공유 𝕏 🦋 in