不用说了,又是一个经常用到的方法,直接上码了。。。敬请各位小主参阅!若有不足,敬请指正,非常感谢!
文件拷贝源码:
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 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^