순차 읽기를 위해 입력 스트림 보존
입력 스트림을 수정하거나 새 스트림을 생성하지 않고 입력 스트림에서 여러 번 읽는 것이 특정 상황에서 필요할 수 있습니다. 이미지를 다운로드하고 로컬에 저장하는 경우와 같은 시나리오. 다행스럽게도 반복 액세스를 위해 입력 스트림을 복제할 수 있습니다.
한 가지 접근 방식은 org.apache.commons.io.IOUtils.copy 메소드를 활용하여 입력 스트림 콘텐츠를 바이트 배열로 전송하는 것입니다. 그런 다음 ByteArrayInputStream을 사용하여 이 바이트 배열을 반복적으로 읽을 수 있습니다.
ByteArrayOutputStream baos = new ByteArrayOutputStream(); org.apache.commons.io.IOUtils.copy(in, baos); byte[] bytes = baos.toByteArray();
여기서 다음 접근 방식 중 하나를 따를 수 있습니다.
ByteArrayInputStream의 반복 생성:
while (needToReadAgain) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); yourReadMethodHere(bais); }
ByteArrayInputStream 재설정:
ByteArrayInputStream bais = new ByteArrayInputStream(bytes); while (needToReadAgain) { bais.reset(); yourReadMethodHere(bais); }
주의: 전체 스트림을 메모리에 복사하는 것은 잠재적인 메모리 고갈로 인해 대규모 또는 무한 스트림에 적합하지 않을 수 있습니다. 이러한 경우에는 버퍼나 별도의 데이터 구조를 사용하는 등의 대체 접근 방식이 필요할 수 있습니다.
위 내용은 입력 스트림을 수정하지 않고 여러 번 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!