一:java的nio的channel

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

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

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

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

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

aaarticlea/png;base64,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" alt="" />

二:java的nio的channel的实现

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

==>FileChannel  :

==>DatagramChannel

==>SocketChannel

==>ServerSocketChannel

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

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

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

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

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

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

 package com.yeepay.sxf.testnio;

 import java.io.IOException;
import java.io.RandomAccessFile;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
/**
* 简单测试java的nio中channel组件的作用
* @author sxf
*
*/
public class TestChannelForNio { public static void main(String[] args) throws IOException {
//把文件加载到内存 /usr/sxf/testnio文件
RandomAccessFile aFile = new RandomAccessFile("/usr/sxf/testnio", "rw");
//从文件中获取通道
FileChannel inChannel = aFile.getChannel();
//从通道中注册一个缓冲区,每次48个字节
ByteBuffer buf = ByteBuffer.allocate(48);
//读取第一次
int bytesRead = inChannel.read(buf);
//看文件中是否有数据
while (bytesRead != -1) {
//打印第一次读取字符的个数
System.out.println("Read " + bytesRead); //注意 buf.flip() 的调用,首先读取数据到Buffer,然后反转Buffer,接着再从Buffer中读取数据。
buf.flip(); //打印每一个字符到控制台
while(buf.hasRemaining()){
System.out.print((char) buf.get());
} //清空这次buffer
buf.clear(); bytesRead = inChannel.read(buf); } aFile.close();
}
}

java的nio之:java的nio系列教程之channel的概念的更多相关文章

  1. java的nio之:java的nio系列教程之channel的数据交换

    在Java NIO中,如果两个通道中有一个是FileChannel,那你可以直接将数据从一个channel(译者注:channel中文常译作通道)传输到另外一个channel. transferFro ...

  2. java的nio之:java的nio系列教程之buffer的概念

    一:java的nio的buffer==>Java NIO中的Buffer用于和NIO通道Channel进行交互.==>数据是从通道channel读入缓冲区buffer,从缓冲区buffer ...

  3. Spring 系列教程之 bean 的加载

    Spring 系列教程之 bean 的加载 经过前面的分析,我们终于结束了对 XML 配置文件的解析,接下来将会面临更大的挑战,就是对 bean 加载的探索.bean 加载的功能实现远比 bean 的 ...

  4. SpringBoot系列教程之Bean加载顺序之错误使用姿势辟谣

    在网上查询 Bean 的加载顺序时,看到了大量的文章中使用@Order注解的方式来控制 bean 的加载顺序,不知道写这些的博文的同学自己有没有实际的验证过,本文希望通过指出这些错误的使用姿势,让观文 ...

  5. SpringBoot系列教程之Bean之指定初始化顺序的若干姿势

    上一篇博文介绍了@Order注解的常见错误理解,它并不能指定 bean 的加载顺序,那么问题来了,如果我需要指定 bean 的加载顺序,那应该怎么办呢? 本文将介绍几种可行的方式来控制 bean 之间 ...

  6. kali linux 系列教程之metasploit 连接postgresql可能遇见的问题

    kali linux 系列教程之metasploit 连接postgresql可能遇见的问题 文/玄魂   目录 kali linux 下metasploit 连接postgresql可能遇见的问题. ...

  7. kali Linux系列教程之BeFF安装与集成Metasploit

    kali Linux系列教程之BeFF安装与集成Metasploit 文/玄魂 kali Linux系列教程之BeFF安装与集成Metasploit 1.1 apt-get安装方式 1.2 启动 1. ...

  8. Kali Linux系列教程之OpenVas安装

    Kali Linux系列教程之OpenVas安装 文 /玄魂 目录 Kali Linux系列教程之OpenVas安装 前言 1.  服务器层组件 2.客户层组件 安装过程 Initial setup ...

  9. RabbitMQ系列教程之二:工作队列(Work Queues)(转载)

    RabbitMQ系列教程之二:工作队列(Work Queues)     今天开始RabbitMQ教程的第二讲,废话不多说,直接进入话题.   (使用.NET 客户端 进行事例演示)          ...

随机推荐

  1. Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(一)

    MEX文件是一种可在matlab环境中调用的C语言(或fortran)衍生程序,mex的编译结果实际上就是一个带输出函数mexFunction 的dll文件. 中文名 mex文件 外文名 MATLAB ...

  2. SharePoint开发 - 使用Session(代码修改webconfig)

    博客地址 http://blog.csdn.net/foxdave SharePoint启用Session可以使用Powershell,戳这里:可以修改webconfig. 本篇叙述的重点是通过fea ...

  3. Python的平凡之路(1)

    2016-07-26   一.Python简介   Python是一种解释型.面向对象.动态数据类型的高级程序设计语言.它的特点如下: 面向对象.解释语言.交互性.模块化.动态性.高级语言.可移植.可 ...

  4. Oracle 中批量导入大量测试数据的方法

    执行如下批处理命令: declare  maxrecords constant int := 100000;  i int := 1;begin  for i in 1 .. 20000 loop   ...

  5. 转载--Ubuntu设置环境变量

    Ubuntu设置环境变量并立即生效(以Ubuntu12.04为例) 标签: UbuntuLinux环境变量 2013-09-12 19:04 9961人阅读 评论(1) 收藏 举报  分类: Ubun ...

  6. (转)innerHTML、innerText和outerHTML、outerText的区别

    原文:http://walsh.iteye.com/blog/261966 innerHTML.innerText和outerHTML.outerText的区别          博客分类: CSS/ ...

  7. flex css 布局

    http://www.w3cplus.com/css3/flexbox-basics.html

  8. 对前端mvc的认识和思考

    现在,我们经常都可以看到复杂的JavaScript应用程序,由于这些应用程序变得越来越复杂,一长串的jQuery回调语句或者通过应用程序在 各个状态执行不同的函数调用,这些做法都会变得无法再让人接受, ...

  9. 转载大神的dfs讲解

    http://acm.hdu.edu.cn/forum/read.php?tid=6158 看完明白了好多! 关于剪枝,没有剪枝的搜索不太可能,这题老刘上课的时候讲过两个剪枝,一个是奇偶剪枝,一个是路 ...

  10. CODEVS1001 舒适的路线 (并查集)

    对所有边从大到小排序,枚举最大边,O(m)验证,用并查集维护图是否联通. program CODEVS1001; ; maxn=; INF=; type arr=record u,v,w:int64; ...