"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Java에서 다중 읽기를 위해 입력 스트림을 재사용하는 방법은 무엇입니까?

Java에서 다중 읽기를 위해 입력 스트림을 재사용하는 방법은 무엇입니까?

2024-11-08에 게시됨
검색:413

How to Reuse an Input Stream for Multiple Reads in Java?

입력 스트림 재사용

동일한 입력 스트림을 두 번 읽는 것은 다양한 시나리오에서 유용할 수 있습니다. 그러한 시나리오 중 하나는 원격 이미지를 로드하고 로컬에 저장한 다음 저장된 이미지에 액세스하는 것입니다. 이를 달성하려면 새 입력 스트림을 만드는 대신 동일한 입력 스트림을 재사용하는 것이 더 효율적입니다.

입력 스트림을 재사용하는 한 가지 방법은 해당 내용을 바이트 배열에 복사하는 것입니다. 이는 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