我正在编写一个程序,该程序必须从一个文件夹复制大量但不是大量的数据(一次在几十张照片的范围内)。最初我是java.io.FileOutputStream
用来简单地读取以缓冲和写出,但后来我听说使用java.nio.FileChannel
.
我没有资源来使用我拥有的数据运行一个严肃的、受控的测试,但似乎没有就每种方法的优势达成共识(除了 FileChannel 是线程安全的)。一些用户报告说FileChannel
非常适合较小的文件,另一些用户报告说较大的文件速度会大大提高。
我想知道是否有人确切地知道创建的初衷是什么FileChannel
:它是为了更好的性能而设计的吗?在什么情况下?对于一般类型的数据是否有明确的性能提升,或者我应该期望看到的差异是微不足道的,因为我没有使用足够专业的数据?
编辑:假设我的数据不需要是线程安全的。