java的nio之:java的nio系列教程之channel的概念

简介: 一:java的nio的channelJava NIO的通道类似流,但又有些不同:==>既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。==>通道可以异步地读写。==>通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。

一:java的nio的channel

Java NIO的通道类似流,但又有些不同:

==>既可以从通道中读取数据,又可以写数据到通道。但流的读写通常是单向的。

==>通道可以异步地读写。

==>通道中的数据总是要先读到一个Buffer,或者总是要从一个Buffer中写入。

正如上面所说,从通道读取数据到缓冲区,从缓冲区写入数据到通道。如下图所示:




二:java的nio的channel的实现

这些是Java NIO中最重要的通道的实现:

==>FileChannel  :

==>DatagramChannel

==>SocketChannel

==>ServerSocketChannel





三:java的nio的channel的实现的作用


==>FileChannel 从文件中读写数据。

==>DatagramChannel 能通过UDP读写网络中的数据。

==>SocketChannel 能通过TCP读写网络中的数据。

==>ServerSocketChannel可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。




四:java的nio的channel的基本例子

 1 package com.yeepay.sxf.testnio;
 2 
 3 import java.io.IOException;
 4 import java.io.RandomAccessFile;
 5 import java.nio.ByteBuffer;
 6 import java.nio.channels.FileChannel;
 7 /**
 8  * 简单测试java的nio中channel组件的作用
 9  * @author sxf
10  *
11  */
12 public class TestChannelForNio {
13 
14     public static void main(String[] args) throws IOException {
15         //把文件加载到内存  /usr/sxf/testnio文件
16         RandomAccessFile aFile = new RandomAccessFile("/usr/sxf/testnio", "rw");
17         //从文件中获取通道
18         FileChannel inChannel = aFile.getChannel();
19         //从通道中注册一个缓冲区,每次48个字节
20         ByteBuffer buf = ByteBuffer.allocate(48);
21         //读取第一次
22         int bytesRead = inChannel.read(buf);
23         //看文件中是否有数据
24         while (bytesRead != -1) {
25             //打印第一次读取字符的个数
26             System.out.println("Read " + bytesRead);
27             
28             //注意 buf.flip() 的调用,首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。
29             buf.flip();
30             
31             //打印每一个字符到控制台
32             while(buf.hasRemaining()){
33                     System.out.print((char) buf.get());
34             }
35             
36             //清空这次buffer
37             buf.clear();
38     
39             bytesRead = inChannel.read(buf);
40 
41         }
42 
43         aFile.close();
44     }
45 }
View Code

 

目录
打赏
0
0
0
0
11
分享
相关文章
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
169 96
接替此文【下篇-服务端+后台管理】优雅草蜻蜓z系统JAVA版暗影版为例-【蜻蜓z系列通用】-2025年全新项目整合搭建方式-这是独立吃透代码以后首次改变-独立PC版本vue版搭建教程-优雅草卓伊凡
自研Java框架 Sunrays-Framework使用教程「博客之星」
### Sunrays-Framework:助力高效开发的Java微服务框架 **Sunrays-Framework** 是一款基于 Spring Boot 构建的高效微服务开发框架,深度融合了 Spring Cloud 生态中的核心技术组件。它旨在简化数据访问、缓存管理、消息队列、文件存储等常见开发任务,帮助开发者快速构建高质量的企业级应用。 #### 核心功能 - **MyBatis-Plus**:简化数据访问层开发,提供强大的 CRUD 操作和分页功能。 - **Redis**:实现高性能缓存和分布式锁,提升系统响应速度。 - **RabbitMQ**:可靠的消息队列支持,适用于异步
自研Java框架 Sunrays-Framework使用教程「博客之星」
JAVA网络IO之NIO/BIO
本文介绍了Java网络编程的基础与历史演进,重点阐述了IO和Socket的概念。Java的IO分为设备和接口两部分,通过流、字节、字符等方式实现与外部的交互。
Java字面量详解:概念、分类与使用实例
本文介绍了Java字面量的概念、分类及应用。
57 11
探究Java异常处理【保姆级教程】
Java 异常处理是确保程序稳健运行的关键机制。它通过捕获和处理运行时错误,避免程序崩溃。Java 的异常体系以 `Throwable` 为基础,分为 `Error` 和 `Exception`。前者表示严重错误,后者可细分为受检和非受检异常。常见的异常处理方式包括 `try-catch-finally`、`throws` 和 `throw` 关键字。此外,还可以自定义异常类以满足特定需求。最佳实践包括捕获具体异常、合理使用 `finally` 块和谨慎抛出异常。掌握这些技巧能显著提升程序的健壮性和可靠性。
53 4
Java的基础概念一
### Java编程基础简介 #### 一、注释 注释用于解释代码,不会参与编译和运行。Java支持三种注释: - **单行注释**:以 `//` 开头。 - **多行注释**:以 `/* ... */` 包围。 - **文档注释**:通常用于生成开发文档。 #### 二、关键字 关键字是被Java赋予特定含义的英文单词,全部小写,且在代码编辑器中有特殊颜色标记。常用的如 `class` 表示定义一个类。
Java的基础概念一
【潜意识Java】Java基础教程:从零开始的学习之旅
本文介绍了 Java 编程语言的基础知识,涵盖从简介、程序结构到面向对象编程的核心概念。首先,Java 是一种高级、跨平台的面向对象语言,支持“一次编写,到处运行”。接着,文章详细讲解了 Java 程序的基本结构,包括包声明、导入语句、类声明和 main 方法。随后,深入探讨了基础语法,如数据类型、变量、控制结构、方法和数组。此外,还介绍了面向对象编程的关键概念,例如类与对象、继承和多态。最后,针对常见的编程错误提供了调试技巧,并总结了学习 Java 的重要性和方法。适合初学者逐步掌握 Java 编程。
56 1
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
JavaFX是Java的下一代图形用户界面工具包。JavaFX是一组图形和媒体API,我们可以用它们来创建和部署富客户端应用程序。 JavaFX允许开发人员快速构建丰富的跨平台应用程序,允许开发人员在单个编程接口中组合图形,动画和UI控件。本文详细介绍了JavaFx的常见用法,相信读完本教程你一定有所收获!
1992 2
Java最新图形化界面开发技术——JavaFx教程(含UI控件用法介绍、属性绑定、事件监听、FXML)
Java的基础概念(二)
本文介绍了Java编程语言中的运算符和表达式,涵盖算术运算符、赋值运算符、关系运算符、逻辑运算符、三元运算符等。重点讲解了算术运算符的使用,如加减乘除取余,并强调了整数除法和取余的特殊性。同时,详细说明了隐式转换与强制转换的概念及应用场景,以及字符串和字符的拼接规则。通过多个案例演示了不同运算符的实际应用,包括数值拆分、自增自减、三元表达式的使用等。最后简要提及了运算符的优先级,指出小括号具有最高优先级。
Liunx部署java项目Tomcat、Redis、Mysql教程
本文详细介绍了如何在 Linux 服务器上安装和配置 Tomcat、MySQL 和 Redis,并部署 Java 项目。通过这些步骤,您可以搭建一个高效稳定的 Java 应用运行环境。希望本文能为您在实际操作中提供有价值的参考。
208 26

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等