Java学习-044-文件拷贝
不用说了,又是一个经常用到的方法,直接上码了。。。敬请各位小主参阅!若有不足,敬请指正,非常感谢!
文件拷贝源码:
/**
* <strong>文件拷贝</strong><br>
* <br>
* @author Aaron.ffp
* @version V1.0.0: autotest-base cn.ffp.autotest.base.util FileUtils.java copy, 2016-03-19 12:47:38.299 Exp $
*
* @param srcFile 源文件
* @param desFile 目标文件
* @param override 是否覆盖
*
* @return boolean 成功复制返回 true;否则返回 false
*/
public static boolean copy(String srcFile, String desFile, boolean override) {
boolean success = false; InputStream is = null;
OutputStream os = null; if (StringUtils.isBlank(srcFile) || StringUtils.isBlank(desFile)) {
msg = "参数非法:源文件【" + srcFile + "】或目标文件【" + desFile + "】不可为空、null、Tab、回车等,请确认!";
logger.error(msg);
return success;
} try {
File src = new File(srcFile);
File des = new File(desFile); // 判断源文件是否存在且为文件
if (!src.exists() || src.isDirectory()) {
msg = "文件拷贝失败:源文件【" + srcFile + "】不存在或者为目录,请确认!";
logger.error(msg);
return success;
} // 判断目标文件是否存在且为文件
if (des.isDirectory()) {
msg = "文件拷贝失败:目标文件【" + desFile + "】为目录,请确认!";
logger.error(msg);
return success;
} else if (des.exists() && !override) {
msg = "文件拷贝失败:目标文件【" + desFile + "】已存在,且您未允许覆盖目标文件,请知悉!";
logger.warn(msg);
return success;
} des.delete(); // 创建目标文件所在目录
if (!FileUtils.createFolder(des.getParent())) {
msg = "文件拷贝时创建目标文件【" + desFile + "】目录失败...";
logger.error(msg);
return success;
} is = new FileInputStream(src);
os = new FileOutputStream(des);
int readByte = 0; byte[] buffer = new byte[2048]; while ((readByte = is.read(buffer)) != -1 ) {
os.write(buffer, 0, readByte);
} success = true; msg = "成功拷贝文件:【" + srcFile + "】至【" + desFile + "】,请知悉!";
logger.info(msg);
} catch (FileNotFoundException fnfe) {
msg = "文件拷贝失败:" + fnfe.getMessage();
logger.error(msg, fnfe);
return success;
} catch (IOException ioe) {
msg = "文件拷贝失败:" + ioe.getMessage();
logger.error(msg, ioe);
return success;
} finally {
try {
if (os != null) {
os.close();
} if (is != null) {
is.close();
}
} catch (IOException ioe) {
msg = "文件拷贝成功后,释放资源失败:" + ioe.getMessage();
logger.warn(msg, ioe); return success;
}
} return success;
}
文件拷贝单元测试源码:
@Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件已存在,且允许覆盖\n", dependsOnMethods="test_copy_desFileExists")
public void test_copy_desFileOverride() {
String srcFile = ConstantInfo.PROJECT_RESOURCES_HOME + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
String desFile = this.baseDir + "color-copy.js"; Assert.assertTrue(FileUtils.copy(srcFile, desFile, true));
} @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件已存在,且不允许覆盖\n", dependsOnMethods="test_copy_ok")
public void test_copy_desFileExists() {
String srcFile = ConstantInfo.PROJECT_RESOURCES_HOME + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
String desFile = this.baseDir + "color-copy.js"; Assert.assertFalse(FileUtils.copy(srcFile, desFile, false));
} @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 通过性\n")
public void test_copy_ok() {
String srcFile = ConstantInfo.PROJECT_RESOURCES_HOME + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
String desFile = this.baseDir + "color-copy.js"; Assert.assertTrue(FileUtils.copy(srcFile, desFile, false));
} @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件为目录\n")
public void test_copy_srcIsDirectory() {
String srcFile = ConstantInfo.PROJECT_RESOURCES_MAIN + "js" + ConstantInfo.OS_FILE_SEPARATOR;
String desFile = this.baseDir + "color-copy.js"; Assert.assertFalse(FileUtils.copy(srcFile, desFile, false));
} @Test(description="public static boolean FileUtils.copy(String srcFile, String desFile, boolean override) ---> 破坏性:文件不存在\n")
public void test_copy_srcNotExist() {
String srcFile = ConstantInfo.PROJECT_RESOURCES_MAIN + "js" + ConstantInfo.OS_FILE_SEPARATOR + "color.js";
String desFile = this.baseDir + "color-copy.js"; Assert.assertFalse(FileUtils.copy(srcFile, desFile, false));
}
文件拷贝单元测试源码
至此, Java学习-044-文件拷贝 顺利完结,希望此文能够给初学 Java 的您一份参考。
最后,非常感谢亲的驻足,希望此文能对亲有所帮助。热烈欢迎亲一起探讨,共同进步。非常感谢! ^_^
Java学习-044-文件拷贝的更多相关文章
- Java学习-022-Properties 文件数据写入
Properties 配置文件写入主要通过 Properties.setProperty 和 Properties.store 两个方法,此文以一个简单的 properties 文件写入源码做示例. ...
- Java学习-019-Properties 文件读取实例源代码
在这几天的学习过程中,有开发的朋友告知我,每个编程语言基本都有相应的配置文件支持类,像 Python 编程语言中支持的 ini 文件及其对应的配置文件读取类 ConfigParse,通过这个类,用户可 ...
- Java学习-018-EXCEL 文件写入实例源代码
众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...
- Java学习-017-EXCEL 文件读取实例源代码
众所周知,EXCEL 也是软件测试开发过程中,常用的数据文件导入导出时的类型文件之一,此文主要讲述如何通过 EXCEL 文件中 Sheet 的索引(index)或者 Sheet 名称获取文件中对应 S ...
- Java学习-016-CSV 文件读取实例源代码
上文(CSV文件写入)讲述了日常自动化测试过程中将测试数据写入 CSV 文件的源码,此文主要讲述如何从 CSV 文件获取测试过程中所需的参数化数据.敬请各位小主参阅,若有不足之处,敬请大神指正,不胜感 ...
- Java学习-015-CSV 文件写入实例源代码
在日常的自动化测试脚本编写的过程中,有时要将获取的测试结果或者测试数据存放在数据文件中,以用作后续的参数化测试.常用的文件文件类型无非 txt.csv.xls.properties.xml 这五种文件 ...
- java中把文件拷贝到指定目录下最简单几种方法
java中把文件拷贝到指定目录下最简单几种方法 String savePath = "D:/file";// 文件保存到d盘的file目录下 File savefile = n ...
- Java IO 流-- 文件拷贝
IO流操作套路: 1.创建源: 2.选择流: 3.操作: 4.释放资源 上代码: package com.xzlf.io; import java.io.File; import java.io.Fi ...
- Java IO和Java NIO在文件拷贝上的性能差异分析
1. 在JAVA传统的IO系统中,读取磁盘文件数据的过程如下: 以FileInputStream类为例,该类有一个read(byte b[])方法,byte b[]是我们要存储读取到用户空间的缓冲区 ...
随机推荐
- ccc prefab
MonsterPrefab.js var Helpers = require('Helpers'); cc.Class({ extends: cc.Component, properties: { s ...
- df卡住问题解决
windows的share文件挂载到linux/mnt/share下,当windows重启,会导致df卡住. 运行 1 umount -l /mnt/share 2 killall ...
- JS保留小数点(四舍五入、四舍六入)实例
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <hea ...
- [题解+总结]NOI2015
// 此博文为迁移而来,写于2015年7月20日,不代表本人现在的观点与看法.原始地址:http://blog.sina.com.cn/s/blog_6022c4720102w6u7.html 1.总 ...
- 【BZOJ】1109: [POI2007]堆积木Klo
题意 \(n(1 \le n \le 100000)\)个数放在一排,可以一走一些数(后面的数向前移),要求最大化\(a_i=i\)的数目. 分析 分析容易得到一个dp方程. 题解 \(d(i)\)表 ...
- Js:DOM对象操作常用的方法和属性
- 【noiOJ】p6253
t6253:用二分法求方程的根 查看 提交 统计 提问 总时间限制: 1000ms 内存限制: 65536kB 描述 用二分法求下面方程在(-10, 10)之间的一个根. 2x3- 4x2+ 3x ...
- POJ 1321 简单dfs
1.POJ 1321 棋盘问题 2.总结: 题意:给定棋盘上放k个棋子,要求同行同列都不重. #include<iostream> #include<cstring> #in ...
- 关于Autoit上传文件的问题
Autoit上传文件需要安装两个软件: 使用这个做文件上传时:在代码中需要添加的代码如下: Runtime.getRuntime().exec("d:/zhpg.exe"); D盘 ...
- CentOS6设置密码过期时间
#密码过期时间180天chage -M 180 rootchage -l rootchage -M 180 gwchage -l gw