`
janeky
  • 浏览: 366003 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java NIO 简单入门

阅读更多

为什么用NIO 

 

优点:NIO以块的方式处理数据,NIO是以流(字节)方式处理。NIO将最耗时的IO操作(即填充和提取缓冲区)转移回操作统。

 

缺点:面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性

 

补充:JDK1.4以后,java.io.*已经以NIO为基础重新实现了,处理也会很快。

 

 

缓冲区Buffer

 

任何时候访问NIO中的数据,都是通过缓冲区来操作。本质是一个数组,提供了数据的结构化访问,

还可以跟踪系统的读写进程。

 

最简单的是ByteBuffer。还有其他基于Java基本类型的Buffer。例如 CharBuffer,IntBuffer...

 

Buffer有三个属性:

position 变量跟踪已经写了多少数据。更准确地说,它指定了下一个字节将放到数组的哪一个元素中

 

limit 变量表明还有多少数据需要取出(在从缓冲区写入通道时),或者还有多少空间可以放入数据(在从通道读入缓冲区时)

 

capacity 表明可以储存在缓冲区中的最大数据容量。实际上,它指定了底层数组的大小 — 或者至少是指定了准许我们使用的底层数组的容量

 

flip() ,clear()等操作都是对这些变量的改变,改变缓冲区的属性 

 

 

通道Channel

 

通过通道,可以读取和写入数据。等价于原I/O的流。通道是连接缓冲区的纽带,对数据的操作是通过通道来处理的,通道直接操作缓冲区。

 

通道是双向的,这点跟流不同。

 

“从一个通道中读取很简单:只需创建一个缓冲区,然后让通道将数据读到这个缓冲区中。写入也相当简单:创建一个缓冲区,用数据填充它,然后让通道用这些数据来执行写入操作”

 

总结

 

NIO的精髓就是Buffer 和 Channel,明白了它们的原来细节,接下来就是熟悉API,熟练应用到你的项目中去了。在这里推荐一个很好的NIO入门材料(IBM开发社区的NIO入门),希望对您学习NIO有帮助

 

0
8
分享到:
评论

相关推荐

    java nio 入门

    Java NIO并非简单的输入输出API的替代,而是提供了一种新的I/O模型。传统IO基于流(Stream)进行数据读写,而NIO基于通道(Channel)和缓冲区(Buffer)。NIO的核心特点是它支持非阻塞I/O操作,可以显著提高程序的效率,...

    java nio入门学习,两个pdf

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java标准库提供的一种替代传统I/O模型的新技术。在Java 1.4版本中引入,NIO提供了一种全新的I/O编程方式,使得Java开发者能够更高效地处理I/O操作...

    Java NIO入门

    IBM的NIO入门教程通常会涵盖这些基础概念,并通过实例演示如何使用NIO进行实际的I/O操作。教程可能还会深入讲解NIO的高级特性,如scatter/gather(分散/聚集)读写,以及如何使用`Selector`进行多路复用。通过学习这...

    Java Nio selector例程

    java侧起server(NioUdpServer1.java),基于Java Nio的selector 阻塞等候,一个android app(NioUdpClient1文件夹)和一个java程序(UI.java)作为两个client分别向该server发数据,server收到后分别打印收到的消息...

    Java NIO入门的源码

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java从1.4版本开始引入的一种I/O模型,旨在提供一种更高效、更具控制力的I/O操作方式。与传统的-blocking I/O(阻塞I/O)相比,NIO的关键在于它...

    java_NIO_入门

    本教程旨在为读者提供一个全面的NIO入门指南,不仅涵盖了NIO的基础理论知识,还包括了实际编程中使用到的代码示例。 在学习NIO之前,读者需要掌握Java语言的一些基本概念,包括类、继承、包等。此外,如果读者对...

    java NIO socket聊天室

    可以作为NIO socket入门的例子,Reactor模式,重点理解key.attach, jar文件里包含了源代码 1,运行server.bat启动服务器,可以打开编辑,修改端口号 2,运行client.bat启动客户端,可以打开编辑,ip,和端口号 3...

    java-NIO-入门教程.docx

    "Java NIO 入门教程" Java NIO(New I/O)是 Java 语言中的一种新的输入/输出机制,自 JDK 1.4 开始引入。不同于传统的面向流的 I/O,NIO 采用面向块的 I/O 方式,提供了高速的 I/O 操作。NIO 库的主要特点是使用...

    Java视频教程 Java游戏服务器端开发 Netty NIO AIO Mina视频教程

    [第4节] JavaNIO流-通道1.flv [第5节] Java NIO流-通道2.flv [第6节] Java NIO流-socket通道操作.flv [第7节] Java NIO流-文件通道操作.flv [第8节] Java NIO流-选择器 .flv [第9节] Java NIO流-选择器操作.flv...

    NIO 入门.chm,NIO 入门.chm

    **NIO(New Input/Output)是Java编程语言中用于替代标准I/O(BIO,Blocking I/O)的一组API,它提供了非阻塞式的I/O操作方式,极大地提升了Java在处理I/O密集型应用时的性能。NIO在Java 1.4版本中被引入,之后在...

    javaNIO入门(良好排版格式).pdf

    javaNIO入门(良好排版格式).pdf

    Java NIO总结

    Java NIO的总结, 对于新人入门理解很好, 使用Markdown编写

    java NIO入门(中英+代码)

    Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出...同时,NIO并不适用于所有场景,对于低并发、简单I/O操作的情况,传统的Blocking I/O可能更为合适。因此,合理选择和运用I/O模型是提升系统性能的关键。

    java_NIO_入门(良好排版格式).pdf

    ### Java NIO 入门详解 #### 一、NIO 的背景与意义 **NIO (New Input/Output)** 是 Java 在 JDK 1.4 中引入的一个全新的输入输出库,旨在改进原有的 IO 库(主要位于 `java.io.*` 包中)的性能和功能。传统的 Java...

    IBM Java文档库 NIO 入门

    《IBM Java文档库 NIO 入门》这篇教程主要针对的是Java 1.4引入的New Input/Output (NIO)库,这是一个重要的更新,旨在提高Java程序的I/O性能,特别是面向块的I/O操作。NIO弥补了传统I/O(基于java.io.*包)的不足,...

Global site tag (gtag.js) - Google Analytics