zoukankan      html  css  js  c++  java
  • Java学习-044-文件拷贝

    不用说了,又是一个经常用到的方法,直接上码了。。。敬请各位小主参阅!若有不足,敬请指正,非常感谢!

    文件拷贝源码:

     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:38.299 Exp $
     6      * 
     7      * @param srcFile 源文件
     8      * @param desFile 目标文件
     9      * @param override 是否覆盖
    10      * 
    11      * @return boolean 成功复制返回 true;否则返回 false
    12      */
    13     public static boolean copy(String srcFile, String desFile, boolean override) {
    14         boolean success = false;
    15         
    16         InputStream is = null;
    17         OutputStream os = null;
    18         
    19         if (StringUtils.isBlank(srcFile) || StringUtils.isBlank(desFile)) {
    20             msg = "参数非法:源文件【" + srcFile + "】或目标文件【" + desFile + "】不可为空、null、Tab、回车等,请确认!";
    21             logger.error(msg);
    22             return success;
    23         }
    24         
    25         try {
    26             File src = new File(srcFile);
    27             File des = new File(desFile);
    28             
    29             // 判断源文件是否存在且为文件
    30             if (!src.exists() || src.isDirectory()) {
    31                 msg = "文件拷贝失败:源文件【" + srcFile + "】不存在或者为目录,请确认!";
    32                 logger.error(msg);
    33                 return success;
    34             }
    35             
    36             // 判断目标文件是否存在且为文件
    37             if (des.isDirectory()) {
    38                 msg = "文件拷贝失败:目标文件【" + desFile + "】为目录,请确认!";
    39                 logger.error(msg);
    40                 return success;
    41             } else if (des.exists() && !override) {
    42                     msg = "文件拷贝失败:目标文件【" + desFile + "】已存在,且您未允许覆盖目标文件,请知悉!";
    43                     logger.warn(msg);
    44                     return success;
    45             }
    46             
    47             des.delete();
    48             
    49             // 创建目标文件所在目录
    50             if (!FileUtils.createFolder(des.getParent())) {
    51                 msg = "文件拷贝时创建目标文件【" + desFile + "】目录失败...";
    52                 logger.error(msg);
    53                 return success;
    54             }
    55             
    56             is = new FileInputStream(src);
    57             os = new FileOutputStream(des);
    58             int readByte = 0;
    59             
    60             byte[] buffer = new byte[2048];
    61             
    62             while ((readByte = is.read(buffer)) != -1 ) {
    63                 os.write(buffer, 0, readByte);
    64             }
    65             
    66             success = true;
    67             
    68             msg = "成功拷贝文件:【" + srcFile + "】至【" + desFile + "】,请知悉!";
    69             logger.info(msg);
    70         } catch (FileNotFoundException fnfe) {
    71             msg = "文件拷贝失败:" + fnfe.getMessage();
    72             logger.error(msg, fnfe);
    73             return success;
    74         } catch (IOException ioe) {
    75             msg = "文件拷贝失败:" + ioe.getMessage();
    76             logger.error(msg, ioe);
    77             return success;
    78         } finally {
    79             try {
    80                 if (os != null) {
    81                     os.close();
    82                 }
    83                 
    84                 if (is != null) {
    85                     is.close();
    86                 }
    87             } catch (IOException ioe) {
    88                 msg = "文件拷贝成功后,释放资源失败:" + ioe.getMessage();
    89                 logger.warn(msg, ioe);
    90                 
    91                 return success;
    92             }
    93         }
    94         
    95         return success;
    96     }
    97     

    文件拷贝单元测试源码:

     1     @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件已存在,且允许覆盖
    ", dependsOnMethods="test_copy_desFileExists")
     2     public void test_copy_desFileOverride() {
     3         String srcFile = ConstantInfo.PROJECT_RESOURCES_HOME + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
     4         String desFile = this.baseDir + "color-copy.js";
     5         
     6         Assert.assertTrue(FileUtils.copy(srcFile, desFile, true));
     7     }
     8     
     9     @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件已存在,且不允许覆盖
    ", dependsOnMethods="test_copy_ok")
    10     public void test_copy_desFileExists() {
    11         String srcFile = ConstantInfo.PROJECT_RESOURCES_HOME + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
    12         String desFile = this.baseDir + "color-copy.js";
    13         
    14         Assert.assertFalse(FileUtils.copy(srcFile, desFile, false));
    15     }
    16     
    17     @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 通过性
    ")
    18     public void test_copy_ok() {
    19         String srcFile = ConstantInfo.PROJECT_RESOURCES_HOME + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
    20         String desFile = this.baseDir + "color-copy.js";
    21         
    22         Assert.assertTrue(FileUtils.copy(srcFile, desFile, false));
    23     }
    24     
    25     @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件为目录
    ")
    26     public void test_copy_srcIsDirectory() {
    27         String srcFile = ConstantInfo.PROJECT_RESOURCES_MAIN + "js" + ConstantInfo.OS_FILE_SEPARATOR;
    28         String desFile = this.baseDir + "color-copy.js";
    29         
    30         Assert.assertFalse(FileUtils.copy(srcFile, desFile, false));
    31     }
    32     
    33     @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件不存在
    ")
    34     public void test_copy_srcNotExist() {
    35         String srcFile = ConstantInfo.PROJECT_RESOURCES_MAIN + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
    36         String desFile = this.baseDir + "color-copy.js";
    37         
    38         Assert.assertFalse(FileUtils.copy(srcFile, desFile, false));
    39     }
    文件拷贝单元测试源码

     

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

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

     

     

  • 相关阅读:
    欧拉公式
    isap的一些想法
    错误合集
    Hello World
    PAT (Advanced Level) Practice 1068 Find More Coins
    PAT (Advanced Level) 1087 All Roads Lead to Rome
    PAT (Advanced Level) 1075 PAT Judge
    PAT (Advanced Level) 1067 Sort with Swap(0, i)
    PAT (Advanced Level) 1017 Queueing at Bank
    PAT (Advanced Level) 1025 PAT Ranking
  • 原文地址:https://www.cnblogs.com/fengpingfan/p/5317922.html
Copyright © 2011-2022 走看看