黑马程序员技术交流社区
标题:
为什么使用FileChanel进行文件读写比不使用慢
[打印本页]
作者:
yong230
时间:
2013-1-25 11:03
标题:
为什么使用FileChanel进行文件读写比不使用慢
本帖最后由 张向辉 于 2013-1-26 16:41 编辑
下面一段使用FileChannel读写文件打印出来110毫秒:
public static void copyFile2(String sourceFile, String descFile) {
try {
long time = new Date().getTime();
FileChannel inChannel = new FileInputStream(sourceFile).getChannel();
FileChannel outChannel = new FileOutputStream(descFile).getChannel();
try {
inChannel.transferTo(0, inChannel.size(), outChannel);
} catch (IOException e) {
throw e;
} finally {
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
}
long l = new Date().getTime() - time;
System.out.println("拷贝结束!----耗时:" + l + "毫秒");
} catch (Exception e) {
e.printStackTrace();
}
}
不使用FileChannel直接使用FileInputStream和FileOutputStream则快很多打印出来耗时0毫秒,这是为什么呢?
作者:
梁俊
时间:
2013-1-25 14:02
FileChannel 是那天的视频啊,怎么没见过
作者:
yong230
时间:
2013-1-25 14:18
FileChannel 是nio包下的类库,nio 是 java New IO 的简称,在 jdk1.4 里提供的新 api ,提供高性能的io操作,按理说nio应该比传统io快,但实际却没有传统的io快,这是为什么?
作者:
黄锦成
时间:
2013-1-25 19:15
这个是从百度百科搜到的简介:
NIO 简介:nio 是java New IO 的简称,在jdk1.4 里提供的新api 。Sun 官方标榜的特性如下: 为所有的原始类型提供(Buffer) 缓存支持。 字符集编码解码解决方案。 Channel :一个新的原始I/O 抽象。 支持锁和内存映射文件的文件访问接口。 提供多路(non-bloking) 非阻塞式的高伸缩性网络I/O 。
个人理解:他说“为所有的原始类型提供(Buffer) 缓存支持”,提供缓存支持,对于小文件来说,它是会慢一些;缓存的优势会在大数据量时体现出来
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2