Java输入/输出(I/O
)处理从源读取数据并将数据写入目标。通常,读取存储在文件中的数据或使用I/O
将数据写入到文件中。
java.io
和java.nio
包中包含处理输入/输出的Java类。java.io
包具有执行I/O
的类。java.nio
包是新的I/O
包。
java.io
包中的类都与基于流的I/O
操作有关。 基于流的I/O
使用流在数据源和Java程序之间传输字节数据。
Java程序每次从一个字节读取或写入一个字节。这种执行I/O
操作的方法很慢。流可以用于单向数据传输。 输入流只能将数据从数据源传输到Java程序,而输出流只能将数据从Java程序传输到数据目标。
新输入/输出(NIO)解决了基于流的I/O
中的慢速问题。在NIO
中处理I/O
操作的通道和缓冲区。一个通道就像一个流。它表示数据源和Java程序之间的连接。
通道提供双向数据传输工具,可以使用通道来读取数据以及写入数据。可以获得只读通道,只写通道或读写通道。缓冲区是有界数据容器,具有确定其可能包含数据的上限固定容量。
在基于流的I/O
中,可直接将数据写入流。 在基于通道的I/O
中将数据写入缓冲区,并将该缓冲区传递到将数据写入数据目标的通道。
当从数据源读取数据时,向一个通道传递一个缓冲区。通道将数据从数据源读入缓冲区。
Java 7引入了新的输入/输出API,它提供了一个新的I/O
API。 它提供了原始文件I/O
API中缺少的一些功能。它向Java类库添加了三个包:java.nio.file
,java.nio.file.attribute
和java.nio.file.spi
。
新的输入/输出API以统一的方式处理所有文件系统。新输入/输出API提供的文件系统支持是可扩展的。新的输入/输出API支持所有文件系统上的基本文件操作(复制,移动和删除)。它支持符号链接。
它支持访问文件系统和文件的属性。可以创建一个监视服务来监视目录上的任何事件,例如添加新文件或子目录,删除文件等。