Java NIO 总结: Channel 通道
Java NIO 中的 Channel 是一个对象,可以通过它来读取和写入数据。Channel 类似于传统 I/O 中的 Stream。
下面是一个简单的使用 Channel 读取数据的例子:
import java.io.IOException;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Paths;
import java.nio.file.StandardOpenOption;
public class ChannelExample {
public static void main(String[] args) {
ByteBuffer buffer = ByteBuffer.allocate(48);
try (FileChannel fileChannel = FileChannel.open(Paths.get("example.txt"), StandardOpenOption.READ)) {
int bytesRead = fileChannel.read(buffer);
while (bytesRead != -1) {
// 处理数据...
// 重设缓冲区以继续读取
buffer.flip();
// 继续读取
bytesRead = fileChannel.read(buffer);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
在这个例子中,我们首先创建了一个 ByteBuffer 缓冲区,然后打开了一个 FileChannel 来读取文件。read 方法会将数据读入缓冲区,然后我们通过 flip 方法重设缓冲区以准备读取。如果没有更多数据,read 方法会返回 -1。异常处理使用了 try-with-resources 语句来确保 FileChannel 在操作完成后自动关闭。
评论已关闭