挺晚的了,直接上码。敬请各位小主参阅,若有不足之处,敬请指正,非常感谢!

目录文件拷贝源码:

     /**
* <strong>目录拷贝</strong><br>
* <br>
* @author Aaron.ffp
* @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java copy, 2016-03-19 12:47:48.392 Exp $
*
* @param srcDir 源目录
* @param recCop 是否递归拷贝(true:是)
* @param desDir 目标目录
* @param recDir 是否拷贝目录(true:是)
* @param override 是否覆盖
*
* @return boolean 成功复制返回 true;否则返回 false
*/
public static boolean copy(String srcDir, boolean recCop, String desDir, boolean recDir, boolean override){
boolean success = false; if (StringUtils.isBlank(srcDir) || StringUtils.isBlank(desDir)) {
msg = "参数非法:源目录【" + srcDir + "】或目标目录【" + desDir + "】不可为空、null、Tab、回车等,请确认!";
logger.error(msg); return success;
} File src = new File(srcDir);
File des = new File(desDir); // 判断源目录是否存在且为目录
if (!src.exists() || !src.isDirectory()) {
msg = "目录拷贝失败:源目录【" + srcDir + "】不存在或者为文件,请确认!";
logger.error(msg);
return success;
} // 判断目标目录是否存在且为目录
if (des.isFile()) {
msg = "目录拷贝失败:目标目录【" + desDir + "】为文件,请确认!";
logger.error(msg);
return success;
} else if (!des.exists()) {
msg = "目录拷贝前,成功创建目标目录【" + desDir + "】,请知悉!";
logger.info(msg);
} // 判断目录是否以文件分割符结尾
srcDir = srcDir.endsWith(ConstantInfo.OS_FILE_SEPARATOR) ? srcDir : srcDir + ConstantInfo.OS_FILE_SEPARATOR;
desDir = desDir.endsWith(ConstantInfo.OS_FILE_SEPARATOR) ? desDir : desDir + ConstantInfo.OS_FILE_SEPARATOR; LinkedList<String> fList = FileUtils.getfList(srcDir, recCop); if (fList.isEmpty() || fList.size() == 0) {
msg = "源目录【" + srcDir + "】为空,无文件可被拷贝,请知悉!";
logger.info(msg);
success = true;
return success;
} int srcFileCount = fList.size();
int failCount = 0;
String srcFile = "";
String desFile = ""; for (int i = 0; i < srcFileCount; i++) {
srcFile = fList.get(i);
desFile = fList.get(i).replace((recDir ? srcDir : FileUtils.getfParent(srcFile)), desDir); if (!FileUtils.copy(srcFile, desFile, override)) {
msg = "目录拷贝:源目录【" + srcDir + "】,拷贝源文件【" + srcFile + "】至【" + desFile + "】失败,请确认!";
logger.error(msg); failCount++;
}
} msg = "目录拷贝:源目录【" + srcDir + "】,目标目录【" + desDir + "】,成功拷贝 " + (srcFileCount - failCount) + " 个文件,失败 " + failCount + " 个文件,请知悉!";
logger.info(msg); if (failCount < 1) {
success = true;
} return success;
}

  PS:上述源码中涉及的方法,请前往如下链接查看:

  获取目录文件列表:LinkedList<String> getfList(String dir, boolean recursion)

  文件拷贝:boolean copy(String srcFile, String desFile, boolean override)

目录文件拷贝单元测试源码:

     @Test(description="public static boolean FileUtils.copy(String srcDir, boolean recCop, String desDir, boolean recDir, boolean override) ---> 通过性\n", dependsOnMethods="test_copy_folder")
public void test_copy_folder_notOverride() {
String srcDir = ConstantInfo.PROJECT_RESOURCES_TEST;
String desDir = this.baseDir; fileList.clear(); Assert.assertFalse(FileUtils.copy(srcDir, true, desDir, false, false));
} @Test(description="public static boolean FileUtils.copy(String srcDir, boolean recCop, String desDir, boolean recDir, boolean override) ---> 通过性\n", dependsOnGroups="getfList", dependsOnMethods="test_copy_desFileOverride")
public void test_copy_folder() {
String srcDir = ConstantInfo.PROJECT_RESOURCES_TEST;
String desDir = this.baseDir; fileList.clear(); Assert.assertTrue(FileUtils.copy(srcDir, true, desDir, false, true));
}

单元测试源码

至此, Java学习-045-目录中文件拷贝 顺利完结,希望此文能够给初学 Java 的您一份参考。

最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^

Java学习-045-目录中文件拷贝的更多相关文章

  1. java统计指定目录中文件的个数和总的大小

    转: 统计指定目录中文件的个数和总的大小 package file; import java.io.File; import java.util.ArrayList; public class Fil ...

  2. java学习一目了然——File类文件处理

    java学习一目了然--File类文件处理 File类(java.io.File) 构造函数: File(String path) File(String parent,String child) F ...

  3. Java学习之InputStream中read()与read(byte[] b)

    Java学习之InputStream中read()与read(byte[] b) 这两个方法在抽象类InputStream中都是作为抽象方法存在的, JDK API中是这样描述两者的: read() ...

  4. 在Windows下通过命令行或者.bat文件统计一个目录中文件数量

    在Windows下面怎样通过命令行统计一个目录中文件的数量,或者说,如果在一个.bat文件中,统计一个目录中的文件数量? 我原来以为是不可能的,要编一个vbs程序什么的,后来到网上找了下,发现还真是可 ...

  5. Java通过NIO实现快速文件拷贝的代码

    将内容过程重要的内容片段做个记录,下面的内容段是关于Java通过NIO实现快速文件拷贝的内容. public static void fileCopy( File in, File out ) thr ...

  6. C#统计目录中文件MD5值

    1. [代码]统计目录中文件MD5值 using System.IO;using System.Security.Cryptography;using System.Collections;using ...

  7. 总结java中文件拷贝剪切的5种方式-JAVA IO基础总结第五篇

    本文是Java IO总结系列篇的第5篇,前篇的访问地址如下: 总结java中创建并写文件的5种方式-JAVA IO基础总结第一篇 总结java从文件中读取数据的6种方法-JAVA IO基础总结第二篇 ...

  8. Java IO和Java NIO 和通道 在文件拷贝上的性能差异分析

    1.  在JAVA传统的IO系统中,读取磁盘文件数据的过程如下: 以FileInputStream类为例,该类有一个read(byte b[])方法,byte b[]是我们要存储读取到用户空间的缓冲区 ...

  9. Java学习笔记-基础语法Ⅸ-文件

    File File是文件和路径名的抽象表示,File封装的并不是一个真正存在的文件,是一个路径名,可以存在也可以不存在 常用方法: 创建文件:createNewFile() 创建目录:mkdir() ...

随机推荐

  1. linux 安装eclipse 和cdt

    这个东西说起来简单,但是经历了无数次到失败,终于还是安装完成了. 最早到时候我下载了eclipse和cdt让后安装,安装完成以后,无法运行和编译程序 后来我学到了一个牛逼的命令yum 这个命令会帮助我 ...

  2. hive Java API

    Java连接hive进行操作的方式有多种,接触到了两种: 首先,hive要起动远程服务接口,命令: hive --service hiveserver -p 50000 & 1. 通过jdbc ...

  3. 【BZOJ】2879: [Noi2012]美食节

    题意 \(m\)个厨师,\(n\)种菜,每种菜需要做\(p_i\)份,每个厨师做第\(i\)种菜用时\(t_{i, j}\).一个厨师做完一道菜才能做下一道.每份菜的时间是这个厨师做完这道菜的用时加上 ...

  4. 【HDU】3506 Monkey Party

    http://acm.hdu.edu.cn/showproblem.php?pid=3506 题意:环形石子合并取最小值= =(n<=1000) #include <cstdio> ...

  5. 【ZOJ】3329 One Person Game

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=3754 题意:有三个色子,分别有k1.k2.k3个面,权值分别是1-k1, 1~ ...

  6. MYSQL加锁的测验

     存储引擎  支持的锁定级别 myisam      表级别 memory     表级别   inndb       行级别  bdb:        页级别 lock锁定类型 锁定方式       ...

  7. 基于 Node.js 平台,快速、开放、极简的 web 开发框架。

    资料地址:http://www.expressjs.com.cn/ Express 基于 Node.js 平台,快速.开放.极简的 web 开发框架. $ npm install express -- ...

  8. css sprites介绍

    一.CSS Sprites简介 通常被意译为“CSS图像拼合”或“CSS贴图定位”.CSS Sprites并不是一门新技术,目前它已经在网页开发中发展得较为成熟,CSS Sprites并不是什么金科玉 ...

  9. HTML DOM随笔

    编程接口 所有 HTML 元素被定义为对象,而编程接口则是对象方法和对象属性. 方法是您能够执行的动作(比如添加或修改元素). 属性是您能够获取或设置的值(比如节点的名称或内容). getElemen ...

  10. 常见26个jquery使用技巧详解(比如禁止右键点击、隐藏文本框文字等)

      来自:http://www.xueit.com/js/show-6015-1.aspx 本文列出jquery一些应用小技巧,比如有禁止右键点击.隐藏搜索文本框文字.在新窗口中打开链接.检测浏览器. ...