입력 스트림 재사용
동일한 입력 스트림을 두 번 읽는 것은 다양한 시나리오에서 유용할 수 있습니다. 그러한 시나리오 중 하나는 원격 이미지를 로드하고 로컬에 저장한 다음 저장된 이미지에 액세스하는 것입니다. 이를 달성하려면 새 입력 스트림을 만드는 대신 동일한 입력 스트림을 재사용하는 것이 더 효율적입니다.
입력 스트림을 재사용하는 한 가지 방법은 해당 내용을 바이트 배열에 복사하는 것입니다. 이는 org.apache.commons.io.IOUtils.copy 메소드를 사용하여 수행할 수 있습니다. 그런 다음 결과 바이트 배열을 사용하여 반복적으로 읽을 수 있는 여러 ByteArrayInputStream 객체를 생성할 수 있습니다.
이 작업을 수행하는 방법에 대한 예는 다음과 같습니다.
ByteArrayOutputStream baos = new ByteArrayOutputStream();
org.apache.commons.io.IOUtils.copy(in, baos);
byte[] bytes = baos.toByteArray();
// Option 1: Read the byte array multiple times
while (needToReadAgain) {
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
yourReadMethodHere(bais);
}
// Option 2: Reset the input stream to read from it again
ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
while (needToReadAgain) {
bais.reset();
yourReadMethodHere(bais);
}
이 접근 방식은 스트림 내용을 메모리에 복사하는 작업이 포함되므로 대규모 또는 무한 스트림에는 적합하지 않을 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3