Rumah > Java > javaTutorial > Bagaimana untuk Mengubah OutputStream menjadi InputStream Menggunakan Paip di Jawa?

Bagaimana untuk Mengubah OutputStream menjadi InputStream Menggunakan Paip di Jawa?

Mary-Kate Olsen
Lepaskan: 2024-11-10 00:48:02
asal
297 orang telah melayarinya

How to Transform an OutputStream into an InputStream Using Pipes in Java?

Menukar OutputStream kepada InputStream: Penjelasan

Dalam bidang pengekodan, selalunya menjadi perlu untuk mengubah hala data daripada OutputStream kepada InputStream. Penukaran rumit ini, walaupun tidak semudah sebaliknya, boleh dicapai melalui penggunaan paip yang mahir.

Menyahkod Kuasa Paip

Java.io Java. Kelas PipedInputStream dan java.io.PipedOutputStream muncul sebagai pemain utama dalam proses penukaran ini. Mereka mewujudkan saluran paip satu arah antara OutputStream dan InputStream, membolehkan pemindahan data yang lancar tanpa memerlukan overhed memori yang ketara.

Kod Dikuasakan Lambda untuk Penukaran Mudah

Yang berikut coretan kod memanfaatkan lambda untuk memudahkan penukaran:

PipedInputStream in = new PipedInputStream();
final PipedOutputStream out = new PipedOutputStream(in);
// in a background thread, write the given output stream to the
// PipedOutputStream for consumption
new Thread(() -> {originalOutputStream.writeTo(out);}).start();
Salin selepas log masuk

Cuba-dengan-Sumber: Pendekatan Elegan

Sebagai alternatif, cuba-dengan-sumber menyediakan sintaks yang elegan untuk mengurus sumber:

PipedInputStream in = new PipedInputStream();
new Thread(new Runnable() {
    public void run () {
        // try-with-resources here
        // placing the try block outside the Thread will prematurely close the PipedOutputStream
        try (final PipedOutputStream out = new PipedOutputStream(in)) {
            // write the original OutputStream to the PipedOutputStream
            originalByteArrayOutputStream.writeTo(out);
        } catch (IOException e) {
            // logging and exception handling should go here
        }
    }
}).start();
Salin selepas log masuk

Pertimbangan Tambahan

Dalam kes di mana anda tidak mempunyai kawalan ke atas penciptaan OutputStream, anda mungkin menghadapi ClosedPipeException. Untuk menyelesaikannya, terbalikkan pembina:

PipedInputStream in = new PipedInputStream(out);
new Thread(() -> {originalOutputStream.writeTo(out);}).start();
Salin selepas log masuk

Kelebihan Penukaran Paip

Kaedah penukaran ini cemerlang dari segi kecekapan memori. Tidak seperti teknik lain yang mencipta salinan pendua data, paip hanya mewujudkan sambungan antara aliran tanpa penggunaan memori tambahan. Selain itu, pelaksanaan tak segerak dalam urutan berasingan memastikan kependaman yang minimum dan penggunaan sumber yang dikurangkan.

Atas ialah kandungan terperinci Bagaimana untuk Mengubah OutputStream menjadi InputStream Menggunakan Paip di Jawa?. 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