• 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) ---> 通过性
    ", 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) ---> 通过性
    ", 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 © 2020-2023  润新知