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[]是我们要存储读取到用户空间的缓冲区 ...
随机推荐
- mac笔记
chrome F12快捷键 option+command+i updatedb: http://www.jeffkit.info/2010/04/66/ /usr/libexec/locate.upd ...
- BZOJ4644 : 经典傻逼题
设每个点的权值为和它相连的所有边的权值的异或和,那么等价于选若干个点,使得点权异或和最大,这显然只需要维护一组线性基,然后从高位到低位贪心选取即可. 对于本题,因为有修改操作,所以考虑按时间分治,并用 ...
- Oracle 存储过程学习
转自:http://blog.chinaunix.net/uid-20495387-id-174394.html http://www.cnblogs.com/rootq/articles/11000 ...
- Hadoop IPC的代码结构分析
与IPC相关的代码在org.apache.hadoop.ipc包下.共七个文件,其中4个辅助类: RemoteException Status VersionedProtocol Connection ...
- 定位absolute使内联支持宽高(块属性变为内联,内容默认撑开)margin auto 失效
relative 没脱离文档流 absdute 完全脱离文档流 margin :auto 失效 相对整个文档偏离 相对父级定位 fixed 脱离文档流 与绝对定位特性一致 3.P标快不能包块级标签 ...
- phpunit测试成功 phpunit测试实践代码
16:12 2015/12/8phpunit测试成功,代码写在www目录下,以类名命名代码文件,我的文件名为 ArrayTest.php,类名为ArrayTest,内部写了简单的测试代码:<?p ...
- 【HDU】1850 Being a Good Boy in Spring Festival
http://acm.hdu.edu.cn/showproblem.php?pid=1850 题意:同nim...顺便求方案数... #include <cstdio> #include ...
- 【CodeVS】 p1225 八数码难题
题目描述 Description Yours和zero在研究A*启发式算法.拿到一道经典的A*问题,但是他们不会做,请你帮他们.问题描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字 ...
- linux共享内存实验
顾名思义,消息队列就是一些消息的列表,用户可以在消息队列中添加消息和读取消息等.从这点上看,消息队列具有一定的FIFO特性,但是它可以实现消息的随机查询,比FIFO具有更大的优势.同时,这些消息又是存 ...
- Weka使用介绍
(转) http://baidutech.blog.51cto.com/4114344/1033714/ 1.简介 数据挖掘.机器学习这些字眼,在一些人看来,是门槛很高的东西.诚然,如果做算法实现甚至 ...