NIO教程

Java NIO(新IO)是Java的替代IO API(来自Java 1.4),意味着可以替代标准Java IO API。与标准IO API相比,Java NIO提供了一种不同的IO处理方式。在此页面中,我将列出此博客中与NIO相关的所有可用帖子。

Java Nio

 学习NIO的先决条件

Java I / O如何在较低级别上内部工作?

这篇博客文章主要讨论与I / O相关的事物在较低级别的工作方式。这篇文章供那些想知道如何在机器级别映射Java I / O操作的读者使用。以及您的应用程序在运行时硬件在所有时间内的所有功能。我假设您熟悉基本的IO操作,例如读取文件,通过Java I / O API写入文件;因为那超出了这篇文章的范围。

标准IO和NIO之间的区别

在本教程中,我将着重于确定最明显的区别,在决定在下一个项目中使用哪个区别之前,您必须知道这些区别。

NIO基础

如何在Java NIO中定义路径

如果您的应用程序使用NIO,则应了解有关此类中可用功能的更多信息。在本教程中,我列出了在NIO中创建Path的6种方法。

NIO缓冲区

缓冲区类是构建 java.nio的基础。在本教程中,我们将仔细研究缓冲区,发现各种类型,并学习如何使用它们。然后,我们将看到java.nio缓冲区与java.nio.channels的通道类之间的关系。

NIO频道

通道是继缓冲区之后的java.nio的第二项主要创新,我们在上一教程中已详细了解到。通道提供与I / O服务的直接连接。通道是一种在字节缓冲区和通道另一端的实体(通常是文件或套接字)之间有效传输数据的介质。通常,通道与操作系统文件描述符具有一对一的关系。通道类提供了维持平台独立性所需的抽象,但仍可以对现代操作系统的本机I / O功能进行建模。通道是网关,通过它可以以最小的开销访问操作系统的本机I / O服务,而缓冲区是通道用来发送和接收数据的内部端点。

如何在应用程序中使用NIO

使用NIO逐行读取文件

在本文中,我将举例说明一个非常有用的日常编程任务,即使用Java IO 逐行读取文件并执行某些行操作。在继续之前,请允许我提及本文中所有示例中将要阅读的文件内容。

我将逐行读取文件的内容,并检查是否有任何一行包含单词,"password"然后打印出来。

使用Java NIO读取文件的3种方式

在这篇文章中,我展示了几种从文件系统读取文件的方法。

如何在通道之间传输数据?

与通常在输入源和输出目标之间发生IO的普通Java应用程序一样,在NIO中,您也可能需要非常频繁地将数据从一个通道传输到另一通道。文件数据从一个地方到另一个地方的批量传输非常普遍,以至于在FileChannel类中添加了两种优化方法,以使其效率更高。

让我们了解这些方法。

内存映射文件和MappedByteBuffer

内存映射的I / O使用文件系统来建立从用户空间直接到适用文件系统页面的虚拟内存映射。使用内存映射文件,您可以假装整个文件都在内存中,并且可以通过将其视为一个非常大的数组来访问它。这种方法极大地简化了您为修改文件而编写的代码。

分散/聚集或矢量IO

从通道读取的分散数据是将数据读取到多个缓冲区中的读取操作。因此,通道将数据从通道“ 分散 ”到多个缓冲区中。收集到通道的写操作是一种写操作,它将来自多个缓冲区的数据写到单个通道中。因此,通道来自多个缓冲区的数据“ 收集 ”到一个通道中。在需要分别处理传输数据的各个部分的情况下,散布/收集可能非常有用。

参考文献:

http://docs.oracle.com/javase/tutorial/essential/io/fileio.html

 

saigon has written 1445 articles