>Java >java지도 시간 >입력 스트림을 여러 번 읽는 방법은 무엇입니까?

입력 스트림을 여러 번 읽는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-10-26 06:18:021021검색

 How to Read an Input Stream Multiple Times?

다중 읽기를 위해 입력 스트림 보존

일반적인 입력 스트림은 선형적으로 소비되도록 설계되었기 때문에 입력 스트림을 두 번 읽는 것은 어려운 일입니다. 이를 용이하게 하려면 다음 전략을 고려하십시오.

바이트 배열로 변환

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.