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();
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();
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();
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!