1.NIO简介
I/O流(输入/输出流)指的是计算机与外部世界或者一个程序与计算机的其余部分的之间的接口。新的输入/
输出(NIO)库是在JDK 1.4中引入的。NIO弥补了原来的I/O的不足,它在标准Java代码中提供了高速的、面向块
的I/O。
原来的I/O库与NIO最重要的区别是数据打包和传输的方式的不同,原来的 I/O 以流的方式处理数据,而
NIO 以块的方式处理数据。
面向流的I/O系统一次一个字节地处理数据。一个输入流产生一个字节的数据,一个输出流消费一个字节的数
据。为流式数据创建过滤器非常容易。链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,
这样也是相对简单的。不利的一面是,面向流的I/O通常相当慢。
NIO与原来的I/O有同样的作用和目的,但是它使用块I/O的处理方式。每一个操作都在一步中产生或者消费一
个数据块。按块处理数据比按(流式的)字节处理数据要快得多。但是面向块的I/O缺少一些面向流的I/O所具有的
优雅性和简单性。
2.NIO与普通(非阻塞)I/O区别
NIO与普通的I/O最重要的区别是数据打包和传输方式的不同
I/O:以流的方式处理数据(相比之下NIO速度相当慢)
NIO:以块的方式处理数据
3.NIO核心
NIO以通道Channel和缓冲区Buffer为基础来实现面向块的I/O处理
NIO核心:通道Channel和缓冲区Buffer,每一个I/O操作都要使用通道和缓冲区
4. Channel与Buffer
Channel:对原I/O包中的流的模拟,到任何目的/来自任何源的数据都必须通过一个Channel对象
Buffer:实质上是个容器对象,发送给一个通道的数据都必须先放入缓冲区中,从通道中读取的数据都要先读到缓冲区中
5.通道和流:Channel是Stream的模拟
流:将字节写入流中,再从流中读取数据/将字节写入流中,再从流中写到目的地流是单向的
通道:读/写数据,通道只负责把数据传输到缓冲区,我们不会从通道中直接读取字节/写入字节
通道是双向的,可用于读/写/同时读写
6.Buffer与数组 区别
Buffer-----缓冲区实质上是一个数组.(通常是字节数组ByteBuffer,也可为其他类型的数组,FloatBuffer)
Buffer不仅是数组,Buffer提供了对数据的结构化访问get/put操作,还可跟踪系统的读/写进程
7.NIO 读/写
---读:1.从FileInputStream获得Channel (fin.getChannel())
2.创建一个Buffer, (ByteBuffer buffer = ByteBuffer.allocate(1024))
3.把缓冲区交给通道,数据便会通过通道读取到缓区冲中(channel.read(buffer)),再从缓冲区中读取数据buffer.get
---写:1.从FileOutputStream中获得Channel (fout.getChannel)
2.创建一个Buffer (ByteBuffer buffer = ByteBuffer.allocate(1024))
3.把要写入的数据填充(put)缓冲区,再把缓冲区交给通道,数据便会通过通道写入到目的地(channel.write(buffer))
分享到:
相关推荐
Java NIO的总结, 对于新人入门理解很好, 使用Markdown编写
《NIO学习总结》 NIO(Non-blocking I/O,非阻塞I/O)是Java在JDK 1.4引入的一种新的I/O模型,它为Java提供了更高效的数据处理方式,尤其适用于高并发、大数据量的网络应用。相较于传统的BIO(Blocking I/O)模型,...
《NIO学习总结经典》这篇文章主要探讨了Java的New IO(NIO)框架,这是一个用于高效处理I/O操作的重要库,特别是在处理大量并发连接时。NIO与传统的IO(-blocking I/O)相比,提供了非阻塞的I/O模型,极大地提高了...
### Java NIO 核心概念详解 #### 一、Java NIO 基本介绍 Java NIO(New IO 或 NonBlocking IO)是 Java 1.4 版本开始引入的一种全新的 I/O API,旨在提高 I/O 吞吐量。与传统的阻塞 I/O 相比,NIO 的设计思想更为...
总结 NIO作为Java平台的一项重要技术革新,有效地解决了传统I/O模型中存在的诸多问题。通过引入缓冲区和通道等概念,NIO实现了高效、非阻塞的数据传输,尤其适用于需要处理大量并发连接的场景。对于现代软件开发来...
#### 六、总结 Java NIO提供了一种高效、灵活的方式来处理大量的并发IO操作。通过使用Channels、Buffers和Selectors,开发者可以构建出更加高性能的应用程序。在后续的文章中,我们将深入探讨每个组件的具体实现...
#### 六、总结 NIO 的引入不仅极大地提高了 Java 程序中的 I/O 性能,还为开发者提供了更为灵活的编程模型。通过对 NIO 的学习和实践,程序员能够更好地应对现代软件开发中的高性能需求。无论是对于初学者还是有...
总结来说,NIO网络通信编程是Java中用于构建高性能网络服务的重要技术,通过理解并熟练运用通道、缓冲区和选择器等核心概念,可以设计出高效的并发服务器,满足大规模并发连接的需求。通过学习和实践,我们可以掌握...
根据提供的文件信息,我们可以提取并总结出关于Java NIO(New Input/Output)的重要知识点。 ### Java NIO 概述 Java NIO 是 Java 平台的一个重要特性,首次出现在 Java 1.4 版本中。它为 Java 开发者提供了一套...
总结一下,这个压缩包中的文件涵盖了以下Java NIO关键知识点: 1. 通道(Channel):如FileChannel,用于连接到I/O源和目的地。 2. 缓冲区(Buffer):如ByteBuffer和FloatBuffer,作为数据的临时存储区域,支持...
总结来说,Java NIO提供了更高效、灵活的I/O处理机制,特别是对于高并发、大数据量的场景,NIO的优势更为明显。通过学习和掌握NIO,开发者可以编写出更高效、更具扩展性的I/O密集型应用。"NIO修正版書面例子"这个...
总结,Java NIO提供了一套高效、灵活的文件写入机制,包括通道、缓冲区、内存映射文件和选择器等组件。了解并掌握这些特性,能帮助开发者编写出更高效的I/O程序,特别是对于处理大量并发I/O操作的场景。在实际编程中...