ไปป์ไลน์ใน Java Nio นั้นคล้ายกับไปป์ไลน์จริงโดยมีปลายสองส่วนหนึ่งส่วนเป็นอินพุตและส่วนอื่น ๆ เป็นเอาต์พุต กล่าวคือหลังจากสร้างท่อแล้วคุณสามารถเขียนไปป์ไลน์หรืออ่านไปป์ไลน์ได้ แต่การดำเนินการทั้งสองนี้จะต้องดำเนินการที่ปลายทั้งสอง เหมือนคิวเล็กน้อย
นี่คือแผนภาพของหลักการท่อ:
สร้างท่อ
เปิดไปป์ไลน์ผ่านวิธี pipe.open () ตัวอย่างเช่น:
Pipe pipe = Pipe.open();
เขียนข้อมูลไปยังไปป์ไลน์
ในการเขียนข้อมูลไปยังไปป์ไลน์คุณต้องเข้าถึงช่อง Sink แบบนี้:
Pipe.SinkChannel sinkChannel = pipe.sink();
เขียนข้อมูลไปยัง SinkChannel โดยเรียกใช้วิธีการเขียน () ของ SinkChannel เช่นนี้:
สตริง newData = "สตริงใหม่ที่จะเขียนไปยังไฟล์ ... " + system.currentTimeMillis (); bytebuffer buf = bytebuffer.allocate (48); buf.clear (); buf.put (newdata.getBytes ()); buf.flip (); ในขณะที่ (buf.hasremaining ()) {sinkchannel.write (buf);}ในตัวอย่างการทดสอบเราให้การดำเนินการไปป์ไลน์ง่าย ๆ การเขียนเนื้อหาก่อนไปยังไปป์ไลน์ก่อนจากนั้นอ่านเนื้อหาจากไปป์ไลน์
แพ็คเกจ com.test.nio; นำเข้า java.io.ioexception; นำเข้า java.nio.bytebuffer; นำเข้า java.nio.channels.pipe; คลาสสาธารณะ testpipea {/** * @param args * @throws excext pipe.sinkchannel sinkchannel = pipe.sink (); สตริง newdata = "itbuluoge.com พูดว่า:"+system.currentTimeMillis (); bytebuffer buf = byteBuffer.Allocate (48); buf.clear (); ไปป์ไลน์*/ในขณะที่ (buf.hasremaining ()) {sinkchannel.write (buf);}/*สร้างการอ่านไปป์ไลน์*/pipe.sourcechannel sourcechannel = pipe.source (); bytesRead = sourcechannel.read (getBuf); getBuf.flip ();/*อ่านเนื้อหาจากไปป์ไลน์*/ในขณะที่ (getBuf.hasremaining ()) {system.out.print ((ถ่าน) getBuf.get ());}}}}}}}}}}}ผลลัพธ์ผลลัพธ์
เราจะเห็นว่าเราสามารถบรรลุเป้าหมายที่เราต้องการ โปรดทราบว่าเมื่อฉันเขียนโปรแกรมในสถานที่นี้ฉันมีข้อผิดพลาดนั่นคือเมื่อฉันอ่านไปป์ไลน์ฉันไม่ได้ตั้งค่า getBuf.flip () ซึ่งทำให้ไม่สามารถอ่านข้อมูลได้ ฟังก์ชั่นนี้สำคัญมาก หลังจากเสร็จสิ้นเนื้อหาการอ่านบัฟเฟอร์คุณต้องตั้งค่าการอ่านธงและกู้คืนตัวชี้ไปยังตำแหน่งเดิมก่อนที่คุณจะสามารถอ่านเนื้อหาทั้งหมดได้
ข้างต้นคือเนื้อหาทั้งหมดที่ใช้ร่วมกันในบทความนี้เกี่ยวกับรหัสการใช้งานของท่อ Java Nio และฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!