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

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

 

 

原文地址:https://www.cnblogs.com/fengpingfan/p/5317922.html