다중 읽기를 위해 입력 스트림 보존
일반적인 입력 스트림은 선형적으로 소비되도록 설계되었기 때문에 입력 스트림을 두 번 읽는 것은 어려운 일입니다. 이를 용이하게 하려면 다음 전략을 고려하십시오.
바이트 배열로 변환
org.apache.commons.io.IOUtils.copy 메소드를 활용하여 입력 스트림의 내용을 바이트 배열로 변환합니다. 이 바이트 배열에서 새 ByteArrayInputStream을 생성하여 반복적으로 읽습니다.
<code class="java">ByteArrayOutputStream baos = new ByteArrayOutputStream(); org.apache.commons.io.IOUtils.copy(in, baos); byte[] bytes = baos.toByteArray(); // Read from byte array repeatedly while (needToReadAgain) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); yourReadMethodHere(bais); }</code>
입력 스트림 재설정
또는 각 읽기 작업 후에 입력 스트림을 재설정합니다. 이를 통해 중간 바이트 배열을 생성하지 않고도 스트림을 여러 번 반복할 수 있습니다.
<code class="java">// Create ByteArrayInputStream from original input stream ByteArrayInputStream bais = new ByteArrayInputStream(bytes); // Read from input stream repeatedly while (needToReadAgain) { bais.reset(); // Reset stream for subsequent reads yourReadMethodHere(bais); }</code>
주의
대규모 스트림을 처리할 때는 메모리를 고려하는 것이 중요합니다. 제약. 위의 접근 방식은 스트림을 메모리에 복사하는데, 이러한 경우에는 실행 가능하지 않을 수 있습니다. 대규모 데이터세트의 경우 한 번에 일정 바이트를 읽는 등의 다른 전략을 고려하세요.
위 내용은 입력 스트림을 여러 번 읽는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!