一篇学会 Java NIO Channel 的使用

本文详细介绍了Java NIO的Channel概念,包括FileChannel、SocketChannel、ServerSocketChannel和DatagramChannel的使用。通过示例代码展示了如何进行读写操作,强调了ByteBuffer在数据传输中的作用,并探讨了RandomAccessFile的读写特性。
摘要由CSDN通过智能技术生成

一篇学会 Java NIO Channel 的使用

要从 channel 中读取数据(也就是上面这个例子),需要先将数据读到 ByteBuffer 中;同理,要想向 channel 中写入数据,也需要先将数据写入 ByteBuffer(下面讲输出流的时候会讲)。

 

Java NIO 中的 Channel 分类:

  • FileChannel
  • SocketChannel
  • ServerSocketChannel
  • DatagramChannel

 

channel 分类

FileChannel: 主要用于文件的读写,可以从磁盘上读取文件,也可以向磁盘上写入文件。

SocketChannel:用于 Socket 的 TCP 连接的数据读写,既可以从 Channel 读数据,也可以向 Channle 中写入数据

ServerSocketChannel:通过 ServerSocketChannel 可以监听 TCP 连接,服务端监听到连接之后,会为每个请求创建一个 SocketChannel

DatagramChannel:用于 UDP 协议的数据读写

接下来就分别介绍一下。

FileChannel

主要用于操作文件,废话不多说,直接看例子。

准备文件 test-file.txt ,内容 shDEQuanZhanBiJi

test-file.txt 文件

 

输入 FileInputStream

用于从 FileChannel 中读取数据,例如将指定文件输入到 FileChannel 中,我们就能获取到文件的内容,接下来编写 FileChannel 的 输入流 核心代码:

public static void main(String[] args) throws IOException {   // 创建一个输入流   FileInputStream fileInputStream = new FileInputStream("test-file.txt");   // 通过输入流获取到 channel   FileChannel fileChannel = fileInputStream.getChannel();    // 准备好 ByteBuffer   ByteBuffer buffer = ByteBuffer.allocate(16);   // 将 输入流 的 channel 的数据读入 buffer 中   fileChannel.read(buffer);    // 简单打印 buffer 的内
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值