auto commit
This commit is contained in:
parent
e2f9dd6d10
commit
2328dd1ca6
@ -40,7 +40,7 @@ Java 的 I/O 大概可以分成以下几类
|
|||||||
3. 字符操作:Reader 和 Writer
|
3. 字符操作:Reader 和 Writer
|
||||||
4. 对象操作:Serializable
|
4. 对象操作:Serializable
|
||||||
5. 网络操作:Socket
|
5. 网络操作:Socket
|
||||||
6. 非阻塞式 IO:NIO
|
6. 新的输入/输出:NIO
|
||||||
|
|
||||||
# 磁盘操作
|
# 磁盘操作
|
||||||
|
|
||||||
@ -158,17 +158,17 @@ is.close();
|
|||||||
|
|
||||||
# NIO
|
# NIO
|
||||||
|
|
||||||
NIO 将最耗时的 I/O 操作 ( 即填充和提取缓冲区 ) 转移回操作系统,因而 不需要程序员去控制就可以极大地提高运行速度。
|
新的输入/输出 (NIO) 库是在 JDK 1.4 中引入的。NIO 弥补了原来的 I/O 的不足,它在标准 Java 代码中提供了高速的、面向块的 I/O。
|
||||||
|
|
||||||
## 1. 流与块
|
## 1. 流与块
|
||||||
|
|
||||||
I/O 与 NIO 最重要的区别是数据打包和传输的方式。正如前面提到的,I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。
|
I/O 与 NIO 最重要的区别是数据打包和传输的方式,I/O 以流的方式处理数据,而 NIO 以块的方式处理数据。
|
||||||
|
|
||||||
面向流的 I/O 一次一个字节进行处理数据,一个输入流产生一个字节的数据,一个输出流消费一个字节的数据。为流式数据创建过滤器非常容易,链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。
|
面向流的 I/O 一次处理一个字节数据,一个输入流产生一个字节数据,一个输出流消费一个字节数据。为流式数据创建过滤器非常容易,链接几个过滤器,以便每个过滤器只负责单个复杂处理机制的一部分,这样也是相对简单的。不利的一面是,面向流的 I/O 通常相当慢。
|
||||||
|
|
||||||
一个面向块的 I/O 系统以块的形式处理数据,每一个操作都在一步中产生或者消费一个数据块。按块处理数据比按流处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。
|
一个面向块的 I/O 系统以块的形式处理数据,一次处理数据块。按块处理数据比按流处理数据要快得多。但是面向块的 I/O 缺少一些面向流的 I/O 所具有的优雅性和简单性。
|
||||||
|
|
||||||
I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重新实现了,所以现在它可以利用 NIO 的一些特性。例如, java.io.\* 包中的一些类包含以块的形式读写数据的方法,这使得即使在更面向流的系统中,处理速度也会更快。
|
I/O 包和 NIO 已经很好地集成了,java.io.\* 已经以 NIO 为基础重新实现了,所以现在它可以利用 NIO 的一些特性。例如, java.io.\* 包中的一些类包含以块的形式读写数据的方法,这使得即使在面向流的系统中,处理速度也会更快。
|
||||||
|
|
||||||
## 2. 通道与缓冲区
|
## 2. 通道与缓冲区
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user