NIO学习之Channel
2019-05-13 07:19:58来源:博客园 阅读 ()
一、Channel基础
通道是一个对象,通过它可以读取和写入数据,Channel就是通向什么的道路,为数据的流向提供渠道;
在传统IO中,我们要读取一个文件中的内容使用Inputstream,该stream就是通道,不过在IO中这个通道是单向的,而NIO中Channel是双向的,既可用来进行读操作,又可用来进行写操作;无论读写都作用于Buffer。
1、将数据通过channdel输出到文件
private static void writer( )throws IOException{ String str="I Love China"; byte [] message=str.getBytes("UTF-8"); FileOutputStream fout = new FileOutputStream( filePath ); FileChannel fc = fout.getChannel(); ByteBuffer buffer = ByteBuffer.allocate( 1024 ); for (int i=0; i<message.length; ++i) { buffer.put( message[i] ); } buffer.flip(); fc.write( buffer ); fout.close(); }
2、通过channel将数据读入内存
private static void read( )throws IOException{ FileInputStream inputStream=new FileInputStream(filePath); FileChannel channel=inputStream.getChannel(); ByteBuffer buffer = ByteBuffer.allocate( 1024 ); channel.read(buffer); String msg=new String(buffer.array(),"UTF-8"); System.out.println(msg); inputStream.close(); }
二、channel分类
FileChannel 从文件中读写数据。
DatagramChannel 能通过UDP读写网络中的数据。
SocketChannel 能通过TCP读写网络中的数据。
ServerSocketChannel可以监听新进来的TCP连接,像Web服务器那样。对每一个新进来的连接都会创建一个SocketChannel。
AsynchronousFileChannel:JDK1.7提供的异步操作文件类
原文链接:https://www.cnblogs.com/jalja/p/10855009.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Spring2
- java学习之第一天 2020-06-11
- Java学习之第二天 2020-06-11
- Netty源码分析之ChannelPipeline—异常事件的传播 2020-04-27
- JAVA 必须掌握技能(二)-Java IO流学习之输入输出流 2020-04-20
- Netty:Channel 2020-04-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash