JavaNIOChannels(通道)

JavaNIOChannels(通道) 首页 / Nio入门教程 / JavaNIOChannels(通道)

顾名思义,通道(Channel)被用作从一端到另一端的数据流。在Java NIO中,通道用于读取数据到缓冲区以及从缓冲区写入数据。 

与传统Java IO通道中使用的流不同,Java NIO通道支持阻塞和非阻塞两种方式的异步数据流。

Channel实现

Java NIO通道主要在以下类中实现-

  • FileChannel                 - 为了从文件读取数据,无涯教程使用文件通道。

  • DatagramChannel       - 数据报通道可以通过UDP(用户数据报协议)在网络上读写数据。

  • SocketChannel             - SocketChannel通道可以通过TCP(传输控制协议)在网络上读写数据。

  • ServerSocketChannel- ServerSocketChannel与Web服务器一样通过TCP连接读取和写入数据。

以下示例从C:/Test/temp.txt中读取文本文件,然后将内容打印到控制台。

Hello World!

ChannelDemo.java

链接:https://www.learnfk.comhttps://www.learnfk.com/java-nio/java-nio-channels.html

来源:LearnFk无涯教程网

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翻转缓冲区以准备获取操作
         byteBuffer.flip();
         while (byteBuffer.hasRemaining()) {
            System.out.print((char) byteBuffer.get());
         }
      }
      file.close();
   }
}

运行上面代码输出

Hello World!

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

教程推荐

结构会议力 -〔李忠秋〕

云原生架构与GitOps实战 -〔王炜〕

郭东白的架构课 -〔郭东白〕

爱上跑步 -〔钱亮〕

接口测试入门课 -〔陈磊〕

JavaScript核心原理解析 -〔周爱民〕

玩转webpack -〔程柳锋〕

程序员的数学基础课 -〔黄申〕

Service Mesh实践指南 -〔周晶〕

好记忆不如烂笔头。留下您的足迹吧 :)