饰品企业网站建设赣榆城乡建设局网站

web/2025/10/2 9:31:22/文章来源:
饰品企业网站建设,赣榆城乡建设局网站,定制网页设计报价,办公软件公司排名工具类如下 打包下载方法#xff1a;exportZip#xff08;支持整个文件夹或单文件一起#xff09; 注意:前端发送请求不能用ajax#xff0c;form表单提交可以#xff0c;location.href也可以#xff0c;window.open也可以#xff0c;总之就ajax请求就是不行 import com.… 工具类如下 打包下载方法exportZip支持整个文件夹或单文件一起 注意:前端发送请求不能用ajaxform表单提交可以location.href也可以window.open也可以总之就ajax请求就是不行 import com.leatop.common.utils.StringUtils; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net.URLEncoder; import java.nio.channels.FileChannel; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Enumeration; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream;public class FileToZipUtils {// 日志private static Logger log LoggerFactory.getLogger(FileToZipUtils.class);// 创建文件夹public static String CreateFile(String dir) {File file new File(dir);if (!file.exists()) {//创建文件夹boolean mkdir file.mkdir();} else {}return dir;}// 复制文件public static void copyFile(File source, File dest) throws IOException {FileChannel inputChannel null;FileChannel outputChannel null;try {inputChannel new FileInputStream(source).getChannel();outputChannel new FileOutputStream(dest).getChannel();outputChannel.transferFrom(inputChannel, 0, inputChannel.size());} finally {inputChannel.close();outputChannel.close();}}// 删除文件public void delFile(File file) {File[] listFiles file.listFiles();if (listFiles ! null) {for (File f : listFiles) {if (f.isDirectory()) {delFile(f);} else {f.delete();}}}file.delete();}/*** 通过递归逐层删除文件信息** param filePath*/public static void deleteFileByIO(String filePath) {File file new File(filePath);File[] list file.listFiles();if (list ! null) {for (File temp : list) {deleteFileByIO(temp.getAbsolutePath());}}file.delete();}/*** 将指定路径下的所有文件打包zip导出** param response HttpServletResponse* param sourceFilePath 要打包的路径* param fileName 下载时的文件名称* // * param postfix 下载时的文件后缀 .zip/.rar*/public static void exportZip(HttpServletResponse response, String sourceFilePath, String fileName) {// 默认文件名以时间戳作为前缀SimpleDateFormat sdf new SimpleDateFormat(yyyyMMddHHmmss);String downloadName sdf.format(new Date()) fileName;// 将文件进行打包下载try {OutputStream os response.getOutputStream();// 接收压缩包字节byte[] data createZip(sourceFilePath);response.reset();response.setCharacterEncoding(UTF-8);response.addHeader(Access-Control-Allow-Origin, *);response.setHeader(Access-Control-Expose-Headers, *);// 下载文件名乱码问题response.setHeader(Content-Disposition, attachment;filename URLEncoder.encode(fileName, UTF-8));//response.setHeader(Content-disposition, attachment;filename*utf-8 fileName);response.addHeader(Content-Length, data.length);response.setContentType(application/octet-stream;charsetUTF-8);IOUtils.write(data, os);os.flush();os.close();} catch (Exception e) {e.printStackTrace();}}/**** 压缩文件变成zip输出流*/public static byte[] createZip(String srcSource) throws Exception {ByteArrayOutputStream outputStream new ByteArrayOutputStream();ZipOutputStream zip new ZipOutputStream(outputStream);//将目标文件打包成zip导出File file new File(srcSource);createAllFile(zip, file, );IOUtils.closeQuietly(zip);return outputStream.toByteArray();}/**** 对文件下的文件处理*/public static void createAllFile(ZipOutputStream zip, File file, String dir) throws Exception {//如果当前的是文件夹则进行进一步处理if (file.isDirectory()) {//得到文件列表信息File[] files file.listFiles();//将文件夹添加到下一级打包目录zip.putNextEntry(new ZipEntry(dir /));dir dir.length() 0 ? : dir /;//循环将文件夹中的文件打包for (int i 0; i files.length; i) {createAllFile(zip, files[i], dir files[i].getName()); //递归处理}} else { //当前的是文件打包处理//文件输入流BufferedInputStream bis new BufferedInputStream(new FileInputStream(file));ZipEntry entry new ZipEntry(dir);zip.putNextEntry(entry);zip.write(FileUtils.readFileToByteArray(file));IOUtils.closeQuietly(bis);zip.flush();zip.closeEntry();}}/*** 将存放在sourceFilePath目录下的源文件打包成fileName名称的zip文件并存放到zipFilePath路径下** param sourceFilePath :待压缩的文件路径* param zipFilePath :压缩后存放路径* param fileName :压缩后文件的名称* return*/public static boolean fileToZip(String sourceFilePath, String zipFilePath, String fileName) {boolean flag false;File sourceFile new File(sourceFilePath);FileInputStream fis null;BufferedInputStream bis null;FileOutputStream fos null;ZipOutputStream zos null;if (sourceFile.exists() false) {log.info(待压缩的文件目录 sourceFilePath 不存在.);} else {try {File zipFile new File(zipFilePath / fileName .zip);if (zipFile.exists()) {log.info(zipFilePath 目录下存在名字为: fileName .zip 打包文件.);} else {File[] sourceFiles sourceFile.listFiles();if (null sourceFiles || sourceFiles.length 1) {log.info(待压缩的文件目录 sourceFilePath 里面不存在文件无需压缩.);} else {fos new FileOutputStream(zipFile);zos new ZipOutputStream(new BufferedOutputStream(fos));byte[] bufs new byte[1024 * 10];for (int i 0; i sourceFiles.length; i) {// 创建ZIP实体并添加进压缩包ZipEntry zipEntry new ZipEntry(sourceFiles[i].getName());zos.putNextEntry(zipEntry);// 读取待压缩的文件并写进压缩包里fis new FileInputStream(sourceFiles[i]);bis new BufferedInputStream(fis, 1024 * 10);int read 0;while ((read bis.read(bufs, 0, 1024 * 10)) ! -1) {zos.write(bufs, 0, read);}}flag true;}}} catch (FileNotFoundException e) {e.printStackTrace();throw new RuntimeException(e);} catch (IOException e) {e.printStackTrace();throw new RuntimeException(e);} finally {// 关闭流try {if (null ! bis)bis.close();if (null ! zos)zos.close();} catch (IOException e) {e.printStackTrace();throw new RuntimeException(e);}}}return flag;}/*** 解压缩zip包** param zipFilePath 需要解压的zip文件的全路径* param unzipFilePath 解压后的文件保存的路径* param includeZipFileName 解压后的文件保存的路径是否包含压缩文件的文件名。true-包含false-不包含*/SuppressWarnings(unchecked)public static void unzip(String zipFilePath, String unzipFilePath, boolean includeZipFileName) throws Exception {if (StringUtils.isNotBlank(zipFilePath) || StringUtils.isNotBlank(unzipFilePath)) {File zipFile new File(zipFilePath);// 如果解压后的文件保存路径包含压缩文件的文件名则追加该文件名到解压路径if (includeZipFileName) {String fileName zipFile.getName();if (StringUtils.isNotEmpty(fileName)) {fileName fileName.substring(0, fileName.lastIndexOf(.));}unzipFilePath unzipFilePath File.separator fileName;}// 创建解压缩文件保存的路径File unzipFileDir new File(unzipFilePath);if (!unzipFileDir.exists() || !unzipFileDir.isDirectory()) {unzipFileDir.mkdirs();} // 开始解压ZipEntry entry null;String entryFilePath null, entryDirPath null;File entryFile null, entryDir null;int index 0, count 0, bufferSize 1024;byte[] buffer new byte[bufferSize];BufferedInputStream bis null;BufferedOutputStream bos null;ZipFile zip new ZipFile(zipFile);EnumerationZipEntry entries (EnumerationZipEntry) zip.entries();// 循环对压缩包里的每一个文件进行解压while (entries.hasMoreElements()) {entry entries.nextElement();// 构建压缩包中一个文件解压后保存的文件全路径entryFilePath unzipFilePath File.separator entry.getName();// 构建解压后保存的文件夹路径index entryFilePath.lastIndexOf(File.separator);if (index ! -1) {entryDirPath entryFilePath.substring(0, index);} else {entryDirPath ;}entryDir new File(entryDirPath);// 如果文件夹路径不存在则创建文件夹if (!entryDir.exists() || !entryDir.isDirectory()) {entryDir.mkdirs();} // 创建解压文件entryFile new File(entryFilePath);if (entryFile.exists()) {// 检测文件是否允许删除如果不允许删除将会抛出SecurityExceptionSecurityManager securityManager new SecurityManager();securityManager.checkDelete(entryFilePath);// 删除已存在的目标文件entryFile.delete();} // 写入文件bos new BufferedOutputStream(new FileOutputStream(entryFile));bis new BufferedInputStream(zip.getInputStream(entry));while ((count bis.read(buffer, 0, bufferSize)) ! -1) {bos.write(buffer, 0, count);}bos.flush();bos.close();}zip.close();// 切记一定要关闭掉不然在同一个线程你想解压到临时路径之后再去删除掉这些临时数据那么就删除不了}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/85553.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

做短视频网站收益青岛seo百科

来让我们开始第一个游戏的制作。 这个过程可能有点艰辛,但是只要坚持下来,第一个游戏往往能给我们带来巨大的收益(当然这个收益不是经济上的:-P) 先上截图: iPad中: 游戏构思 角色 在屏幕的上方,有一定数量…

免费的网站程序哪里好1号网站建设 高端网站建设

腾讯云4核8G服务器多少钱?腾讯云4核8G轻量应用服务器12M带宽租用价格646元15个月,活动页面 txybk.com/go/txy 活动链接打开如下图所示: 腾讯云4核8G服务器优惠价格 这台4核8G服务器是轻量应用服务器,详细配置为:轻量4核…

合肥企业网站营销电话wordpress 友情链接页

集合我们高中都学过吧? 最重要的几个特点:元素不能重复、各个元素之间没有关系、没有顺序 集合内的元素可以是单元素或者是集合。 对集合的操作:交集并集差集等,还有对自身的加减等。 需要频繁的加减元素,所以顺序…

九江网站推广重庆模板建站哪家好

题目描述 输入一个正整数n,求n!(即阶乘)末尾有多少个0? 比如: n 10; n! 3628800,所以答案为2输入描述: 输入为一行,n(1 ≤ n ≤ 1000) 输出描述: 输出一个整数,即题目所求 示例1输入 10 输出 2 思路:要统计末尾0的个数,只需要统…

网站上传都传些什么文件网站建设启动资金预算

一、EL表达式 1.1.特点 是一个由java开发的工具包 用于从特定域对象中读取并写入到响应体开发任务,不能向域对象中写入。 EL工具包自动存在Tomcat的lib中(el-api.jar),开发是可以直接使用,无需其他额外的包。 标准…

合肥市建设工程市场信息价网站河南企业网站营销设计

原文:http://www.cnblogs.com/fjdingsd/p/5273008.html 本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别。 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性&#xff1…

网站建设套餐表wordpress升级后编辑文章很慢

快速排序在平均状况下,排序n个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n^2)次比较,但这种状况并不常见。事实上,快速排序通常明显比 其他Ο(n log n)算法更快,因为它的内部循环(inner loop)可以在大部分的架构上很有效率地…

建网站服务器系统旅游网页设计模板网站免费

笔记本win10系统的打印机服务怎么禁用或重启腾讯视频/爱奇艺/优酷/外卖 充值4折起在我们的生活中,如果打印机出错了,我们就需要关闭打印机或者重启打印机,那么笔记本的win10系统禁用/启动打印机服务方法是什么呢?下面小编告诉大家…

钓鱼网站建设百度识图在线识图

安科瑞戴婷 Acrel-Fanny 前言 今年以来,在政策利好推动下光伏、风力发电、电化学储能及抽水蓄能等新能源行业发展迅速,装机容量均大幅度增长,新能源发电已经成为新型电力系统重要的组成部分,同时这也导致新型电力系统比传统的电…

产品销售型企业网站有哪些济南网站开发定制

策略模式定义封装在通常称为Context的驱动程序类中的一系列算法,并使这些算法可互换。 它使算法易于互换,并提供了在特定时间选择适当算法的机制。 算法(策略)在运行时由客户端或上下文选择。 在与客户端交互期间,Con…

设计师常用网站网站的推广方式有哪些

Windows power shell/cmd/shell/脚本 1、shell shell:shell脚本运行的环境,是一个概念不是特指 shell脚本:shell脚本就是将一系列命令按照一定的顺序保存到一个文本文件中,该文本文件被赋予执行权限,执行时依次执行…

北京电商购物网站开发杭州富阳网站建设

环境: ubuntu-2404-server、virtualbox 7.0.18 新建虚拟机 分配 CPU 核心和内存(根据自己电脑实际硬件配置选择) 分配磁盘空间(根据自己硬盘实际情况和需求分配即可) 设置网卡,网卡1 负责上网&#xff0c…

网站推广建设企业管理培训班哪个好

JMeter安装UDP插件后支持发送UDP协议的请求包,官方介绍安装插件后可以用来测试DNS, NTP, TFTP, Boot servers and many-many other systems。 JMeter UDP插件下载地址:http://jmeter-plugins.org/downloads/all/,下载JMeterPlugins-Extras-X.…

网站建设教程实训心得如何申请一个自己的网站

首先,先排除硬件上的问题,使用示波器检测引脚电压是否正常?波形收发是否正常?多用几块板子进行对比测试。如果硬件没有问题,则进行软件上的排除。 在硬件测试无问题基础上,单片机与某功能模块进行串口通信…

深圳前十网站建设公司桂林建网站的公司

一、服务端接收消费者拉取数据的方法二、遍历请求中需要拉取数据的主题分区集合,分别执行查询数据操作,1、会选择合适的副本读取本地日志数据(2.4版本后支持主题分区多副本下的读写分离) 三、会判断当前请求是主题分区Follower发送的拉取数据请求还是消费…

超市会员管理系统seo外包公司多少钱

第8天 小型软件项目开发 8.1 记事本开发 小技巧:用VC6新建工程,以资源方式打开系统自带notepad.exe中的MENU资源,加入到自己新建的工程中;然后再添加到VS工程中,即可获取现有exe的菜单资源。 EndDialog中传入的参数…

甜品网站设计与实现毕业设计php学校网站建设

地点:茗福轩西班牙的一对情侣。老板娘在用电脑讲解。品完茶好像不过瘾,还要去酒吧喝点。

商城网站的开发怎么做贵阳设计网站

异常处理概述在代码的运行过程中,错误是不可避免的,总的来说,错误发生于两种情况:一是程序内部的逻辑或者语法错误,二是运行环境或者用户输入中不可预知的数据造成的错误。对于前者,就称之为错误&#xff0…

网站制作公司 云南中卫网站推广优化

一、goroutine 池 本质上是生产者消费者模型在工作中我们通常会使用可以指定启动的 goroutine 数量-worker pool 模式,控制 goroutine 的数量,防止 goroutine 泄漏和暴涨一个简易的 work pool 示例代码如下: package mainimport ("fmt…

网站改版技术要求e福州首页

转载声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 原文链接:在NS-3中安装可视化工具pyviz的一些问题的解决_寻同学的博客-CSDN博客 今天,在更新软件时,使用以下…