Pipa di Java Nio mirip dengan pipa aktual, dengan dua ujung, satu bagian sebagai input dan bagian lainnya sebagai output. Dengan kata lain, setelah membuat pipa, Anda dapat menulis pipa atau membaca pipa, tetapi kedua operasi ini harus dilakukan di kedua ujungnya. Agak seperti antrian.
Berikut adalah diagram prinsip pipa:
Buat pipa
Buka pipa melalui metode pipa.open (). Misalnya:
Pipe pipe = Pipe.open();
Tulis data ke pipa
Untuk menulis data ke pipa, Anda perlu mengakses saluran wastafel. Seperti ini:
Pipe.SinkChannel sinkChannel = pipe.sink();
Write Data ke SinkChannel dengan memanggil metode write () SinkChannel, seperti ini:
String newData = "String baru untuk menulis ke file ..." + System.currentTimeMillis (); byteBuffer buf = byteBuffer.allocate (48); buf.clear (); buf.put (newData.getbytes ()); buf.flip (); while (buf.hasremaining ()) {sinkchannel.write (buf);}Dalam contoh pengujian, kami memberikan operasi pipa yang sangat sederhana, konten menulis pertama ke pipa, dan kemudian membaca konten dari pipa.
Paket com.test.nio; impor java.io.ioException; impor java.nio.bytebuffer; import java.nio.channels.pipe; public class testpipea {/** * @param args * @throws Exception */public static void main (string [] args) lempar oPer {neno pipa pipa pipa pipa pipa (string []) Pipe.SinkChannel sinkchannel = pipe.sink (); string newData = "itbuluoge.com mengatakan:"+System.currentTimeMillis (); bytebuffer buf = bytebuffer.Allocate (48); buf.clear (); BuF.put (newdata.getbytes (); Buf.clear (); buf.put (newdata.getytes () () (); BUF.Put (newdata.getytes () () (); BUF.Put (newData.gete.); BUF.CLEAR (); BUF.Put (newData.gety () () (); BUF.PLUP.Put (newData.getytes () () (); BUF.PLUP. Pipeline*/while (buf.hasremaining ()) {winkchannel.write (buf);}/*Buat pipa baca*/pipe.sourcechannel Sourcechannel = pipe.source (); bytebuffer getBuf = bytebuffer.allocal (48); int intertebuffer getBuf = byteBuffer.alloced (48); int intertebuffer = byteBuffer.allot (48); bytesread = Sourcechannel.read (getBuf); getBuf.flip ();/*Baca konten dari pipa*/while (getBuf.hasremaining ()) {System.out.print ((char) getBuf.get ());}}}}Hasil output
Kita dapat melihat bahwa kita dapat mencapai tujuan yang kita butuhkan. Perhatikan bahwa ketika saya memprogram di tempat ini, saya memiliki kesalahan, yaitu, ketika saya membaca pipa, saya tidak mengatur getBuf.flip (), yang membuatnya tidak mungkin membaca data. Fungsi ini sangat penting. Setelah menyelesaikan konten membaca buffer, Anda harus mengatur bendera baca dan mengembalikan pointer ke posisi asli sebelum Anda dapat membaca semua konten.
Di atas adalah semua konten yang dibagikan dalam artikel ini tentang kode penggunaan pipa Java Nio, dan saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!