Memelihara Strim Input untuk Bacaan Berurutan
Membaca daripada aliran input berbilang kali tanpa mengubah suai atau mencipta strim baharu mungkin diperlukan dalam keadaan tertentu senario, seperti semasa memuat turun imej dan menyimpannya secara setempat. Nasib baik, adalah mungkin untuk menduplikasi strim input untuk akses berulang.
Satu pendekatan melibatkan penggunaan kaedah org.apache.commons.io.IOUtils.copy untuk memindahkan kandungan aliran input ke dalam tatasusunan bait. Tatasusunan bait ini kemudiannya boleh dibaca berulang kali menggunakan ByteArrayInputStream.
ByteArrayOutputStream baos = new ByteArrayOutputStream(); org.apache.commons.io.IOUtils.copy(in, baos); byte[] bytes = baos.toByteArray();
Dari sana, anda boleh mengikuti mana-mana pendekatan:
Penciptaan Berulang ByteArrayInputStream:
while (needToReadAgain) { ByteArrayInputStream bais = new ByteArrayInputStream(bytes); yourReadMethodHere(bais); }
Tetapkan Semula ByteArrayInputStream:
ByteArrayInputStream bais = new ByteArrayInputStream(bytes); while (needToReadAgain) { bais.reset(); yourReadMethodHere(bais); }
Awas: Menyalin strim penuh ke dalam ingatan mungkin tidak sesuai untuk strim besar atau tak terhingga kerana potensi keletihan memori. Pendekatan alternatif, seperti menggunakan penimbal atau struktur data yang berasingan, mungkin diperlukan dalam kes sedemikian.
Atas ialah kandungan terperinci Bagaimana untuk Membaca dari Strim Input Berbilang Kali Tanpa Mengubah Suainya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!