/**
* Copyright © 2012-2016 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
*/
package com.channelsharing.common.utils;
import com.google.common.collect.Lists;
import org.apache.commons.lang3.StringUtils;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.Enumeration;
import java.util.List;
/**
* 文件操作工具类
* 实现文件的创建、删除、复制、压缩、解压以及目录的创建、删除、复制、压缩解压等功能
*
* @author ThinkGem
* @version 2015-3-16
*/
public class FileUtils extends org.apache.commons.io.FileUtils {
private static Logger logger = LoggerFactory.getLogger(FileUtils.class);
/**
* 复制单个文件,如果目标文件存在,则不覆盖
*
* @param srcFileName 待复制的文件名
* @param descFileName 目标文件名
* @return 如果复制成功,则返回true,否则返回false
*/
public static boolean copyFile(String srcFileName, String descFileName) {
return FileUtils.copyFileCover(srcFileName, descFileName, false);
}
/**
* 复制单个文件
*
* @param srcFileName 待复制的文件名
* @param descFileName 目标文件名
* @param coverlay 如果目标文件已存在,是否覆盖
* @return 如果复制成功,则返回true,否则返回false
*/
public static boolean copyFileCover(String srcFileName,
String descFileName, boolean coverlay) {
File srcFile = new File(srcFileName);
// 判断源文件是否存在
if (!srcFile.exists()) {
logger.debug("复制文件失败,源文件 " + srcFileName + " 不存在!");
return false;
}
// 判断源文件是否是合法的文件
else if (!srcFile.isFile()) {
logger.debug("复制文件失败," + srcFileName + " 不是一个文件!");
return false;
}
File descFile = new File(descFileName);
// 判断目标文件是否存在
if (descFile.exists()) {
// 如果目标文件存在,并且允许覆盖
if (coverlay) {
logger.debug("目标文件已存在,准备删除!");
if (!FileUtils.delFile(descFileName)) {
logger.debug("删除目标文件 " + descFileName + " 失败!");
return false;
}
} else {
logger.debug("复制文件失败,目标文件 " + descFileName + " 已存在!");
return false;
}
} else {
if (!descFile.getParentFile().exists()) {
// 如果目标文件所在的目录不存在,则创建目录
logger.debug("目标文件所在的目录不存在,创建目录!");
// 创建目标文件所在的目录
if (!descFile.getParentFile().mkdirs()) {
logger.debug("创建目标文件所在的目录失败!");
return false;
}
}
}
// 准备复制文件
// 读取的位数
int readByte = 0;
InputStream ins = null;
OutputStream outs = null;
try {
// 打开源文件
ins = new FileInputStream(srcFile);
// 打开目标文件的输出流
outs = new FileOutputStream(descFile);
byte[] buf = new byte[1024];
// 一次读取1024个字节,当readByte为-1时表示文件已经读取完毕
while ((readByte = ins.read(buf)) != -1) {
// 将读取的字节流写入到输出流
outs.write(buf, 0, readByte);
}
logger.debug("复制单个文件 " + srcFileName + " 到" + descFileName
+ "成功!");
return true;
} catch (Exception e) {
logger.debug("复制文件失败:" + e.getMessage());
return false;
} finally {
// 关闭输入输出流,首先关闭输出流,然后再关闭输入流
if (outs != null) {
try {
outs.close();
} catch (IOException oute) {
oute.printStackTrace();
}
}
if (ins != null) {
try {
ins.close();
} catch (IOException ine) {
ine.printStackTrace();
}
}
}
}
/**
* 复制整个目录的内容,如果目标目录存在,则不覆盖
*
* @param srcDirName 源目录名
* @param descDirName 目标目录名
* @return 如果复制成功返回true,否则返回false
*/
public static boolean copyDirectory(String srcDirName, String descDirName) {
return FileUtils.copyDirectoryCover(srcDirName, descDirName,
false);
}
/**
* 复制整个目录的内容
*
* @param srcDirName 源目录名
* @param descDirName 目标目录名
* @param coverlay 如果目标目录存在,是否覆盖
* @return 如果复制成功返回true,否则返回false
*/
public static boolean copyDirectoryCover(String srcDirName,
String descDirName, boolean coverlay) {
File srcDir = new File(srcDirName);
// 判断源目录是否存在
if (!srcDir.exists()) {
logger.debug("复制目录失败,源目录 " + srcDirName + " 不存在!");
return false;
}
// 判断源目录是否是目录
else if (!srcDir.isDirectory()) {
logger.debug("复制目录失败," + srcDirName + " 不是一个目录!");
return false;
}
// 如果目标文件夹名不以文件分隔符结尾,自动添加文件分隔符
String descDirNames = descDirName;
if (!descDirNames.endsWith(File.separator)) {
descDirNames = descDirNames + File.separator;
}
File descDir = new File(descDirNames);
// 如果目标文件夹存在
if (descDir.exists()) {
if (coverlay) {
// 允许覆盖目标目录
logger.debug("目标目录已存在,准备删除!");
if (!FileUtils.delFile(descDirNames)) {
logger.debug("删除目录 " + descDirNames + " 失败!");
return false;
}
} else {
logger.debug("目标目录复制失败,目标目录 " + descDirNames + " 已存在!");
return false;
}
} else {
// 创建目标目录
logger.debug("目标目录不存在,准备创建!");
if (!descDir.mkdirs()) {
logger.debug("创建目标目录失败!");
return false;
}
}
boolean flag = true;
// 列出源目录下的所有文件名和子目录名
File[] files = srcDir.listFiles();
for (int i = 0; i < files.length; i++) {
// 如果是一个单个文件,则直接复制
if (files[i].isFile()) {
flag = FileUtils.copyFile(files[i].getAbsolutePath(),
descDirName + files[i].getName());
// 如果拷贝文件失败,则退出循环
if (!flag) {
break;
}
}
// 如果是子目录,则继续复制目录
if (files[i].isDirectory()) {
flag = FileUtils.copyDirectory(files[i]
没有合适的资源?快使用搜索试试~ 我知道了~
mina_social_business_api-master.zip
共545个文件
java:446个
xml:64个
sh:16个
需积分: 5 0 下载量 191 浏览量
2023-12-30
09:04:55
上传
评论
收藏 576KB ZIP 举报
温馨提示
mina_social_business_api-master
资源推荐
资源详情
资源评论
收起资源包目录
mina_social_business_api-master.zip (545个子文件)
.gitignore 259B
.gitignore 259B
.gitignore 259B
.gitignore 259B
.gitignore 259B
.gitignore 259B
FileUtils.java 39KB
IdCardUtils.java 19KB
OrderInfoServiceImpl.java 16KB
SnsAccessServiceImpl.java 15KB
UserInfoServiceImpl.java 15KB
RedisLock.java 11KB
OrderShopServeServiceImpl.java 11KB
AliyunOssController.java 10KB
WeixinPayNotifyController.java 9KB
ShopGoodsServiceImpl.java 9KB
WeixinPayUtil.java 8KB
UserInfoController.java 7KB
OrderInfoController.java 7KB
ShopInfoController.java 7KB
CartInfoServiceImpl.java 7KB
DateUtils.java 6KB
SensitiveWordValidator.java 6KB
GoodsInfoServiceImpl.java 6KB
ProductInfoServiceImpl.java 6KB
OrderGoodsServiceImpl.java 6KB
PageFragmentController.java 6KB
GoodsInfoController.java 6KB
UserBindMobileServiceImpl.java 6KB
WithdrawInfoServiceImpl.java 5KB
DownloadImageUtil.java 5KB
LockMethodInterceptor.java 5KB
GoodsInfoController.java 5KB
OssUtil.java 5KB
ShopInfoServiceImpl.java 5KB
GoodsInfoServiceImpl.java 5KB
OrderGoodsController.java 5KB
SupplierServiceController.java 5KB
ProductInfoController.java 5KB
HttpClientUtil.java 4KB
RestExceptionHandler.java 4KB
ShopProfitWalletServiceImpl.java 4KB
AddressInfoServiceImpl.java 4KB
OrderGoodsController.java 4KB
GoodsSpecificationServiceImpl.java 4KB
WithdrawInfoController.java 4KB
SpringRedisCacheManager.java 4KB
SessionController.java 4KB
AliyunSms.java 4KB
AmountUtils.java 4KB
SupplierServiceController.java 4KB
UserBindMobileController.java 4KB
DataSourceConfig.java 4KB
DataSourceConfig.java 4KB
WeixinApiServiceImpl.java 4KB
GoodsSpecificationController.java 3KB
ShopGoodsController.java 3KB
SupplierInfoModifyRequestEntity.java 3KB
GoodsCategoryController.java 3KB
OrderShopServeController.java 3KB
ScheduleLogAspect.java 3KB
OrderTestPayController.java 3KB
Encodes.java 3KB
SupplierInfoAddRequestEntity.java 3KB
GoodsSpecificationServiceImpl.java 3KB
IdCardRecognizeUtil.java 3KB
Validator.java 3KB
InvoiceInfoController.java 3KB
RedisConfig.java 3KB
GoodsParamController.java 3KB
UserCertificateServiceImpl.java 3KB
GoodsLikeController.java 3KB
OrderInvoiceController.java 3KB
ProductInfoServiceImpl.java 3KB
GoodsInfoModifyRequestEntity.java 3KB
AddressInfoController.java 3KB
DESEncrypt.java 3KB
GoodsInfoAddRequestEntity.java 3KB
InvoiceInfoServiceImpl.java 3KB
SwaggerConfig.java 3KB
SupplierUserServiceImpl.java 3KB
OrderInfoSchedule.java 3KB
SwaggerConfig.java 3KB
CartInfoController.java 3KB
YamlProperties.java 3KB
OkHttpClientUtil.java 3KB
GoodsCategoryServiceImpl.java 3KB
AutoConfirmSignSchedule.java 3KB
GoodsLikeServiceImpl.java 3KB
ShopProfitController.java 3KB
ShopWalletController.java 2KB
OrderInfoAddRequestEntity.java 2KB
UserCertificateController.java 2KB
SupplierUserController.java 2KB
OrderInvoiceController.java 2KB
PageFragmentServiceImpl.java 2KB
AddressInfoModifyRequestEntity.java 2KB
BaseController.java 2KB
SupplierServiceServiceImpl.java 2KB
DateEditor.java 2KB
共 545 条
- 1
- 2
- 3
- 4
- 5
- 6
资源评论
淘金开源
- 粉丝: 2391
- 资源: 173
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- Python 手写实现 iD3 决策树算法-根据信息增益公式.zip
- 411675952289057车联助手-小窗版(三星)3.5.1.apk
- 三种快速排序方法合并在一个文件中以便直接运行的Python代码示例
- 937712277954201实习5.word
- 2程序语言基础知识pdf1_1716337722703.jpeg
- 简单的Python示例,演示了如何使用TCP/IP协议进行基本的客户端和服务器通信
- 考试.sql
- keil2 + proteus + 8051.exe
- 1961ee27df03bd4595d28e24b00dde4e_744c805f7e4fb4d40fa3f695bfbab035_8(1).c
- mediapipe-0.9.0.1-cp37-cp37m-win-amd64.whl.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功