Java学习-045-目录中文件拷贝
挺晚的了,直接上码。敬请各位小主参阅,若有不足之处,敬请指正,非常感谢!
目录文件拷贝源码:
1 /** 2 * <strong>目录拷贝</strong><br> 3 * <br> 4 * @author Aaron.ffp 5 * @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java copy, 2016-03-19 12:47:48.392 Exp $ 6 * 7 * @param srcDir 源目录 8 * @param recCop 是否递归拷贝(true:是) 9 * @param desDir 目标目录 10 * @param recDir 是否拷贝目录(true:是) 11 * @param override 是否覆盖 12 * 13 * @return boolean 成功复制返回 true;否则返回 false 14 */ 15 public static boolean copy(String srcDir, boolean recCop, String desDir, boolean recDir, boolean override){ 16 boolean success = false; 17 18 if (StringUtils.isBlank(srcDir) || StringUtils.isBlank(desDir)) { 19 msg = "参数非法:源目录【" + srcDir + "】或目标目录【" + desDir + "】不可为空、null、Tab、回车等,请确认!"; 20 logger.error(msg); 21 22 return success; 23 } 24 25 File src = new File(srcDir); 26 File des = new File(desDir); 27 28 // 判断源目录是否存在且为目录 29 if (!src.exists() || !src.isDirectory()) { 30 msg = "目录拷贝失败:源目录【" + srcDir + "】不存在或者为文件,请确认!"; 31 logger.error(msg); 32 return success; 33 } 34 35 // 判断目标目录是否存在且为目录 36 if (des.isFile()) { 37 msg = "目录拷贝失败:目标目录【" + desDir + "】为文件,请确认!"; 38 logger.error(msg); 39 return success; 40 } else if (!des.exists()) { 41 msg = "目录拷贝前,成功创建目标目录【" + desDir + "】,请知悉!"; 42 logger.info(msg); 43 } 44 45 // 判断目录是否以文件分割符结尾 46 srcDir = srcDir.endsWith(ConstantInfo.OS_FILE_SEPARATOR) ? srcDir : srcDir + ConstantInfo.OS_FILE_SEPARATOR; 47 desDir = desDir.endsWith(ConstantInfo.OS_FILE_SEPARATOR) ? desDir : desDir + ConstantInfo.OS_FILE_SEPARATOR; 48 49 LinkedList<String> fList = FileUtils.getfList(srcDir, recCop); 50 51 if (fList.isEmpty() || fList.size() == 0) { 52 msg = "源目录【" + srcDir + "】为空,无文件可被拷贝,请知悉!"; 53 logger.info(msg); 54 success = true; 55 return success; 56 } 57 58 int srcFileCount = fList.size(); 59 int failCount = 0; 60 String srcFile = ""; 61 String desFile = ""; 62 63 for (int i = 0; i < srcFileCount; i++) { 64 srcFile = fList.get(i); 65 desFile = fList.get(i).replace((recDir ? srcDir : FileUtils.getfParent(srcFile)), desDir); 66 67 if (!FileUtils.copy(srcFile, desFile, override)) { 68 msg = "目录拷贝:源目录【" + srcDir + "】,拷贝源文件【" + srcFile + "】至【" + desFile + "】失败,请确认!"; 69 logger.error(msg); 70 71 failCount++; 72 } 73 } 74 75 msg = "目录拷贝:源目录【" + srcDir + "】,目标目录【" + desDir + "】,成功拷贝 " + (srcFileCount - failCount) + " 个文件,失败 " + failCount + " 个文件,请知悉!"; 76 logger.info(msg); 77 78 if (failCount < 1) { 79 success = true; 80 } 81 82 return success; 83 }
PS:上述源码中涉及的方法,请前往如下链接查看:
获取目录文件列表:LinkedList<String> getfList(String dir, boolean recursion)
文件拷贝:boolean copy(String srcFile, String desFile, boolean override)
目录文件拷贝单元测试源码:
1 @Test(description="public static boolean FileUtils.copy(String srcDir, boolean recCop, String desDir, boolean recDir, boolean override) ---> 通过性\n", dependsOnMethods="test_copy_folder") 2 public void test_copy_folder_notOverride() { 3 String srcDir = ConstantInfo.PROJECT_RESOURCES_TEST; 4 String desDir = this.baseDir; 5 6 fileList.clear(); 7 8 Assert.assertFalse(FileUtils.copy(srcDir, true, desDir, false, false)); 9 } 10 11 @Test(description="public static boolean FileUtils.copy(String srcDir, boolean recCop, String desDir, boolean recDir, boolean override) ---> 通过性\n", dependsOnGroups="getfList", dependsOnMethods="test_copy_desFileOverride") 12 public void test_copy_folder() { 13 String srcDir = ConstantInfo.PROJECT_RESOURCES_TEST; 14 String desDir = this.baseDir; 15 16 fileList.clear(); 17 18 Assert.assertTrue(FileUtils.copy(srcDir, true, desDir, false, true)); 19 }
至此, Java学习-045-目录中文件拷贝 顺利完结,希望此文能够给初学 Java 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
欢迎 【 留言 || 关注 || 打赏 】 。您的每一份心意都是对我的鼓励和支持!非常感谢!欢迎互加,相互交流学习!
作者:范丰平,本文链接:https://www.cnblogs.com/fengpingfan/p/5317937.html
Copyright @范丰平 版权所有,如需转载请标明本文原始链接出处,严禁商业用途! 我的个人博客链接地址:http://www.cnblogs.com/fengpingfan