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

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

     

     

  • 相关阅读:
    ASCII对照表
    Python学习记录-3-简明Python教程-数据结构
    Python学习记录-2
    Python新手容易遇到的问题
    python学习问题之-编码
    同步与异步的概念(转自http://blog.chinaunix.net/uid-21411227-id-1826898.html)
    Objective-c学习三
    挺有意思的人体时钟代码(转自http://ziren.org/tools/hone-hone-clock.html)
    int ,long , long long类型的范围
    css3选择器使用例子
  • 原文地址:https://www.cnblogs.com/fengpingfan/p/5317922.html
Copyright © 2020-2023  润新知