【发布时间】:2019-04-18 02:09:24
【问题描述】:
我正在阅读Thinking in Java一书,它解释了java.nio.* 包,并说NIO 比使用传统IO 流读写文件要快。为什么?
我查看了以下信息:
-
IO流是面向字节的,传统IO处理单元是字节,而NIO处理单元是块(字节数组),但是我认为传统IO也可以通过BufferedFile*直接处理块(字节数组),传统IO也有direct 处理字节数组的方法
private native int readBytes(byte b[], int off, int len) throws IOException; IO是阻塞读,NIO可以是非阻塞的,但是我发现文件NIO只能是非阻塞的,那么NIO就没有优势了。
-
我认为需要使用NIO一般是其他需要使用NIO的优势,比如:
transferTo()/transferFrom()
那么,什么时候应该使用 NIO 进行文件读写呢?为什么比传统IO快?正确的使用方法是什么?我应该只在读写文件时使用IO还是NIO?
【问题讨论】:
-
私有方法不是 API 的一部分。 '没用'并不是因为缺少非阻塞模式。这本书真的说“更快”吗?还是“可以更快”?还是“更可扩展”?