Rumah >Java >javaTutorial >Bagaimana untuk Membaca Strim Input Berbilang Kali?
Memelihara Strim Input untuk Berbilang Bacaan
Membaca aliran input dua kali memberikan cabaran kerana aliran input biasa direka untuk digunakan secara linear. Untuk memudahkan ini, pertimbangkan strategi berikut:
Tukar kepada Array Byte
Gunakan kaedah org.apache.commons.io.IOUtils.copy untuk memindahkan aliran input kandungan kepada tatasusunan bait. Buat ByteArrayInputStream baharu daripada tatasusunan bait ini untuk membaca berulang kali daripadanya:
<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>
Tetapkan Semula Strim Input
Sebagai alternatif, tetapkan semula strim input selepas setiap operasi bacaan. Ini membolehkan anda mengulangi strim berbilang kali tanpa membuat tatasusunan bait perantaraan:
<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>
Awas
Apabila berurusan dengan strim besar, adalah penting untuk mempertimbangkan memori kekangan. Pendekatan di atas menyalin strim ke ingatan, yang mungkin tidak dapat dilaksanakan dalam kes sedemikian. Untuk set data yang besar, pertimbangkan strategi lain seperti membaca julat bait pada satu masa.
Atas ialah kandungan terperinci Bagaimana untuk Membaca Strim Input Berbilang Kali?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!