- Java NIO 教程
- Java NIO - 首頁
- Java NIO - 概述
- Java NIO - 環境設定
- Java NIO vs JAVA IO
- Java NIO - 通道
- Java NIO - 檔案通道 (File Channel)
- Java NIO - 資料報通道 (Datagram Channel)
- Java NIO - 套接字通道 (Socket Channel)
- Java NIO - 伺服器套接字通道 (ServerSocket Channel)
- Java NIO - 散射 (Scatter)
- Java NIO - 聚集 (Gather)
- Java NIO - 緩衝區 (Buffer)
- Java NIO - 選擇器 (Selector)
- Java NIO - 管道 (Pipe)
- Java NIO - 路徑 (Path)
- Java NIO - 檔案 (File)
- Java NIO - 非同步檔案通道 (AsynchronousFileChannel)
- Java NIO - 字元集 (CharSet)
- Java NIO - 檔案鎖 (FileLock)
- Java NIO 有用資源
- Java NIO - 快速指南
- Java NIO - 有用資源
- Java NIO - 討論
Java NIO - 通道
描述
顧名思義,通道用作資料從一端流向另一端的媒介。在 Java NIO 中,通道充當緩衝區和另一端實體之間的橋樑;換句話說,通道用於將資料讀取到緩衝區,以及將資料從緩衝區寫入。
與傳統 Java IO 中使用的流不同,通道是雙向的,即可以讀取也可以寫入。Java NIO 通道支援資料的非同步流,既可以阻塞模式也可以非阻塞模式。
通道的實現
Java NIO 通道主要在以下類中實現:
FileChannel − 為了讀取檔案中的資料,我們使用檔案通道。檔案通道的物件只能透過呼叫檔案物件上的 getChannel() 方法來建立,我們不能直接建立檔案通道物件。
DatagramChannel − 資料報通道可以透過 UDP(使用者資料報協議)在網路上讀取和寫入資料。DataGramchannel 的物件可以使用工廠方法建立。
SocketChannel − 套接字通道可以透過 TCP(傳輸控制協議)在網路上讀取和寫入資料。它也使用工廠方法來建立新物件。
ServerSocketChannel − 伺服器套接字通道在 TCP 連線上讀取和寫入資料,就像 Web 伺服器一樣。對於每個傳入的連線,都會建立一個 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!
廣告