在开发过程中,遇到需要拷贝文件夹的需求。网上大部分人的做法是遍历文件夹下每一个文件然后逐个拷贝。已验证效率比较地下。遂搜了一下是否有开源的项目已经实现了该功能。
apache基金会有一个开源jar包commons-io已经实现了该功能。
maven依赖
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
可以在maven中央仓库(https://mvnrepository.com)中查找commons-io就能找到。
实现文件夹拷贝功能很简单:
org.apache.commons.io.FileUtils.copyDirectory(sourcePackageFile,destinationPackageFile);
可以实现原文件夹到目标文件夹的拷贝工作。
测试结果:
1、文件夹拷贝300M左右可以在3到4秒之间完成(本机windows10,固态硬盘,8G内存)
2、如果目标文件夹存在着和原文件夹同名的文件,则目标文件夹内容全部被覆盖
3、如果目标文件夹中存在着原文件夹没有的文件,则目标文件夹会保留该文件(建议如果目标文件夹每次复制都要全部覆盖原来的操作)
例如:1文件夹下有a ,b 文件 2文件夹下有a文件,c文件
将1拷贝到2下。则2文件夹下有a,b,c三个文件。其中a文件发生了覆盖