【发布时间】:2011-07-05 20:21:30
【问题描述】:
我正在编写一个程序,该程序必须从一个文件夹复制大量但不是大量的数据(一次在几十张照片的范围内)。最初我使用java.io.FileOutputStream 来简单地读取以缓冲和写出,但后来我听说使用java.nio.FileChannel 可能会提高性能。
我没有资源来使用我拥有的数据运行一个严肃的、受控的测试,但似乎对于每种方法的优点没有达成共识(除了 FileChannel 是线程安全的)。一些用户报告 FileChannel 非常适合较小的文件,其他用户报告较大的文件速度会大大提高。
我想知道是否有人确切地知道创建FileChannel 的初衷是什么:它是为了更好的性能而设计的吗?在什么情况下?对于一般类型的数据是否有明确的性能提升,或者我应该期望看到的差异是微不足道的,因为我没有处理足够专业的数据?
编辑:假设我的数据不需要是线程安全的。
【问题讨论】:
-
是的,类似的问题已经被问过很多次了,但是我很清楚那里的高级 IO 包。我现在更关心的是两者的原始性能比较。
标签: java performance file filestream filechannel