Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Membaca dari Strim Input Berbilang Kali Tanpa Mengubah Suainya?

Mary-Kate Olsen
Lepaskan: 2024-10-26 04:36:31
asal
378 orang telah melayarinya

How to Read from an Input Stream Multiple Times Without Modifying it?

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();
Salin selepas log masuk

Dari sana, anda boleh mengikuti mana-mana pendekatan:

  • Penciptaan Berulang ByteArrayInputStream:

    while (needToReadAgain) {
      ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
      yourReadMethodHere(bais);
    }
    Salin selepas log masuk
  • Tetapkan Semula ByteArrayInputStream:

    ByteArrayInputStream bais = new ByteArrayInputStream(bytes);
    while (needToReadAgain) {
      bais.reset();
      yourReadMethodHere(bais);
    }
    Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!