Java NIO - Saluran
Deskripsi
Seperti namanya channel digunakan sebagai alat pengaliran data dari satu ujung ke ujung lainnya, disini di java NIO channel berfungsi sama antara buffer dan entitas di ujung lainnya dengan kata lain channel digunakan untuk membaca data ke buffer dan juga menulis data dari buffer.
Berbeda dengan stream yang digunakan pada channel IO Java konvensional yang dua cara yaitu bisa membaca sekaligus menulis. Channel NIO Java mendukung aliran data asynchronous baik dalam mode pemblokiran maupun non pemblokiran.
Penerapan Channel
Saluran Java NIO diimplementasikan terutama di kelas-kelas berikut -
FileChannel- Untuk membaca data dari file kami menggunakan saluran file. Objek saluran file hanya dapat dibuat dengan memanggil metode getChannel () pada objek file karena kita tidak dapat membuat objek file secara langsung.
DatagramChannel - Saluran datagram dapat membaca dan menulis data melalui jaringan melalui UDP (User Datagram Protocol). Objek DataGramchannel dapat dibuat menggunakan metode pabrik.
SocketChannel- Saluran SocketChannel dapat membaca dan menulis data melalui jaringan melalui TCP (Transmission Control Protocol). Ia juga menggunakan metode pabrik untuk membuat objek baru.
ServerSocketChannel- ServerSocketChannel membaca dan menulis data melalui koneksi TCP, sama seperti server web. Untuk setiap koneksi masuk, SocketChannel dibuat.
Contoh
Contoh berikut membaca dari file teks dari C:/Test/temp.txt dan mencetak konten ke konsol.
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();
}
}
Keluaran
Hello World!