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 的您一份参考。

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

 

 

posted @ 2016-03-25 00:40  范丰平  Views(308)  Comments(0Edit  收藏  举报