Java NIO - แชนเนล
คำอธิบาย
ตามชื่อแนะนำช่องถูกใช้เป็นค่าเฉลี่ยของการไหลของข้อมูลจากปลายด้านหนึ่งไปยังอีกด้านหนึ่งที่นี่ในช่อง java NIO จะทำหน้าที่เหมือนกันระหว่างบัฟเฟอร์และเอนทิตีที่ปลายอีกด้านหนึ่งในคำอื่น ๆ ช่องใช้เพื่ออ่านข้อมูลไปยังบัฟเฟอร์และเขียนข้อมูลจากบัฟเฟอร์
แตกต่างจากสตรีมที่ใช้ในแชนเนล Java IO ทั่วไปคือสองทางคือสามารถอ่านและเขียนได้ Java NIO channel รองรับการไหลของข้อมูลแบบอะซิงโครนัสทั้งในโหมดบล็อกและไม่บล็อก
การใช้งานช่อง
ช่อง Java NIO ถูกนำไปใช้ในคลาสต่อไปนี้เป็นหลัก -
FileChannel- ในการอ่านข้อมูลจากไฟล์เราใช้ช่องไฟล์ ออบเจ็กต์ของช่องไฟล์สามารถสร้างได้โดยการเรียกเมธอด getChannel () บนอ็อบเจ็กต์ไฟล์เท่านั้นเนื่องจากเราไม่สามารถสร้างอ็อบเจ็กต์ไฟล์ได้โดยตรง
DatagramChannel - ช่องดาต้าแกรมสามารถอ่านและเขียนข้อมูลผ่านเครือข่ายผ่าน UDP (User Datagram Protocol) วัตถุของ DataGramchannel สามารถสร้างได้โดยใช้วิธีการของโรงงาน
SocketChannel- ช่อง SocketChannel สามารถอ่านและเขียนข้อมูลผ่านเครือข่ายผ่าน TCP (Transmission Control Protocol) นอกจากนี้ยังใช้วิธีการของโรงงานในการสร้างวัตถุใหม่
ServerSocketChannel- ServerSocketChannel อ่านและเขียนข้อมูลผ่านการเชื่อมต่อ TCP เช่นเดียวกับเว็บเซิร์ฟเวอร์ สำหรับทุกการเชื่อมต่อที่เข้ามาจะมีการสร้าง SocketChannel
ตัวอย่าง
ตัวอย่างต่อไปนี้อ่านจากไฟล์ข้อความจาก C:/Test/temp.txt และพิมพ์เนื้อหาไปยังคอนโซล
temp.txt
Hello World!
ChannelDemo.java
import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
public class ChannelDemo {
public static void main(String args[]) throws IOException {
RandomAccessFile file = new RandomAccessFile("C:/Test/temp.txt", "r");
FileChannel fileChannel = file.getChannel();
ByteBuffer byteBuffer = ByteBuffer.allocate(512);
while (fileChannel.read(byteBuffer) > 0) {
// flip the buffer to prepare for get operation
byteBuffer.flip();
while (byteBuffer.hasRemaining()) {
System.out.print((char) byteBuffer.get());
}
}
file.close();
}
}
เอาต์พุต
Hello World!