-
2022-04-12 09:48:46
最近在做一个需求,就是从后台接口下载一个Zip的文件,然后将这个文件解压后再加载里面的内容,解压Zip需要用到密码解压。
首先,是下载文件,下载文件可以直接使用OkHttp,对应的下载代码如下:
/** * 下载zip文件 * * @param url */ private void downloadFile(final String url) { OkHttpClient.Builder builder = new OkHttpClient.Builder().connectTimeout(20, TimeUnit.SECONDS) .writeTimeout(5, TimeUnit.SECONDS) .readTimeout(5, TimeUnit.SECONDS); Request request = new Request.Builder().url(url).build(); builder.build().newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { InputStream is = null; byte[] buf = new byte[4096]; int len = 0; FileOutputStre
更多相关内容 -
基于jsZip库 解压读取文件 对文件重命名 删除文件 打包文件 下载到本地
2020-09-22 19:03:44基于jsZip库 压缩文件 解压文件 对文件重命名 删除文件 打包文件 下载到本地 希望可以给你们参考价值 -
Java解压本地zip文件(zip4j)
2021-10-24 16:56:31在成功将远程zip文件下载到本地后,如何将本地zip文件解压到本地指定目录就是接下来要解决的问题,将文件解压到本地指定目录后的心得与理解在此进行记录。 提示:以下是本篇文章正文内容,下面案例可供参考 一、...
前言
在成功将远程zip文件下载到本地后,如何将本地zip文件解压到本地指定目录就是接下来要解决的问题,将文件解压到本地指定目录后的心得与理解在此进行记录。
提示:以下是本篇文章正文内容,下面案例可供参考
一、前提条件
二、实现过程
1. 使用对象
在这里我导入了专用于处理zip文件的依赖zip4j,zip4j官网:http://www.lingala.net/zip4j.html
Maven仓库地址:https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j
在这里我导入的版本是2.2.0
2. 实现思路
将要进行解压zip压缩文件抽象成ZipFile文件对象,并调用ZipFile本身的方法extractAll()方法将文件进行解压,此时将解压后的文件的存储位置作为extractAll()方法的参数。
3. 实现代码
/** * 将压缩文件的内容解压到本地指定目录中 */ public void unZipFile() throws ZipException { // 创建zip文件对象 ZipFile zipFile = new ZipFile("文件路径\\XXXX.zip"); // 解压全部zip文件 zipFile.extractAll("指定的目录"); // 输出解压结果 System.out.println("文件解压成功!"); }
通过Junit4进行测试是否可以将本地指定的压缩文件解压缩到指定目录中
四、运行结果
总结
将本地zip压缩文件解压到指定的本地目录功能到此就全部实现,基于zip4j的强大功能之下,解压文件没有了Java自带的zip文件操作的繁琐,功能强大,但使用起来却非常简单。在最后简单的总结一下zip的基本知识,zip4j默认采用UTF-8编码,所以它支持中文,同时也支持密码,并且还支持多种压缩算法。就像zip4j的作者在GitHub上说的那样:
它试图使处理 zip 文件/流变得更加容易。不再有带有输入流和输出流的笨重样板代码。
本次也只是简单的使用zip4j进行了解压文件,zip4j真正的强大之处仍然需要我去慢慢的探索,我很平凡,却始终相信自己不会简单,只要我想要,就会通过自己的努力去得到。羡慕别人不如自己拥有,现在的努力奋斗成就未来的自己!
-
下载zip文件并解压到本地
2020-02-26 10:23:13第一步:先从下载地址把文件下载到本地 /** * TODO 下载文件到本地 * @author nadim * * @date add by wl * * @param fileUrl 远程下载地址 * * @param fileLocal 本地路径 * * @throws Exception ...第一步:先从下载地址把文件下载到本地
/** * TODO 下载文件到本地 * @author nadim * * @date add by wl * * @param fileUrl 远程下载地址 * * @param fileLocal 本地路径 * * @throws Exception */ public boolean downloadFile(String fileUrl,String fileLocal) throws Exception { boolean flag=false; URL url = new URL(fileUrl); HttpURLConnection urlCon = (HttpURLConnection) url.openConnection(); urlCon.setConnectTimeout(6000); urlCon.setReadTimeout(6000); int code = urlCon.getResponseCode(); if (code != HttpURLConnection.HTTP_OK) { throw new Exception("文件读取失败"); } //读文件流 DataInputStream in = new DataInputStream(urlCon.getInputStream()); DataOutputStream out = new DataOutputStream(new FileOutputStream(fileLocal)); byte[] buffer = new byte[2048]; int count = 0; while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); } try { if(out!=null) { out.close(); } if(in!=null) { in.close(); } } catch (Exception e) { e.printStackTrace(); } flag=true; return flag; }
第二步:创建一个工具类
import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; /** * 封装了XML转换成object,object转换成XML的代码 * * @author Steven * */ public class ZipUtils { /** * @param sourcefiles 源文件(服务器上的zip包存放地址) * @param decompreDirectory 解压缩后文件存放的目录 * @throws IOException IO异常 */ @SuppressWarnings("unchecked") public static void unzip(String sourcefiles, String decompreDirectory) throws IOException { ZipFile readfile = null; try { readfile =new ZipFile(sourcefiles); Enumeration takeentrie = readfile.getEntries(); ZipEntry zipEntry = null; File credirectory = new File(decompreDirectory); credirectory.mkdirs(); while (takeentrie.hasMoreElements()) { zipEntry = (ZipEntry) takeentrie.nextElement(); String entryName = zipEntry.getName(); InputStream in = null; FileOutputStream out = null; try { if (zipEntry.isDirectory()) { String name = zipEntry.getName(); name = name.substring(0, name.length() - 1); File createDirectory = new File(decompreDirectory+ File.separator + name); createDirectory.mkdirs(); } else { int index = entryName.lastIndexOf("\\"); if (index != -1) { File createDirectory = new File(decompreDirectory+ File.separator+ entryName.substring(0, index)); createDirectory.mkdirs(); } index = entryName.lastIndexOf("/"); if (index != -1) { File createDirectory = new File(decompreDirectory + File.separator + entryName.substring(0, index)); createDirectory.mkdirs(); } File unpackfile = new File(decompreDirectory + File.separator + zipEntry.getName()); in = readfile.getInputStream(zipEntry); out = new FileOutputStream(unpackfile); int c; byte[] by = new byte[1024]; while ((c = in.read(by)) != -1) { out.write(by, 0, c); } out.flush(); } } catch (IOException ex) { ex.printStackTrace(); throw new IOException("解压失败:" + ex.toString()); } finally { if (in != null) { try { in.close(); } catch (IOException ex) { } } if (out != null) { try { out.close(); } catch (IOException ex) { ex.printStackTrace(); } } in=null; out=null; } } } catch (IOException ex) { ex.printStackTrace(); throw new IOException("解压失败:" + ex.toString()); } finally { if (readfile != null) { try { readfile.close(); } catch (IOException ex) { ex.printStackTrace(); throw new IOException("解压失败:" + ex.toString()); } } } } }
调用ZipUtils工具类中的unzip方法即可解压zip文件
-
本地Tomcat运行时不自动解压war包
2020-03-02 14:08:27本地Tomcat运行时不自动解压war包问题 问题: 今天遇到了一个很奇怪的问题,我刚刚从官方网站下载的apache-tomcat-8.5.423压缩包,解压后直接启动tomcat运行没问题,可以看到tomcat默认的初始页面,可是将项目的war...本地Tomcat运行时不自动解压war包问题
问题:
今天遇到了一个很奇怪的问题,我刚刚从官方网站下载的apache-tomcat-8.5.423压缩包,解压后直接启动tomcat运行没问题,可以看到tomcat默认的初始页面,可是将项目的war包添加到webapps目录下后启动的时候tomcat居然不自动解压我的war包。
尝试:
通过网上搜索,查到以下结果
server.xml中的< context path="/" docBase=“ads-center” reloadable=“true” crossContext=“true” />
检查了这个配置,发现也没有错误。解决:
最后反思了下最近的配置变动,于是才想起来一个关键的问题,我前段时间配置IDEA的tomcat的时候,添加了环境变量 CATALINA_HOME
于是,我直接去环境变量中,将环境变量注释掉,重新启动tomcat,开始自动解压war包了!反思:
平常开发过程中,只注重代码层面的问题和优化,却忽略了很多基本的东西,原来,用于启动Tomcat的批处理文件startup.bat,仔细阅读。在这个文件中,首先判断CATALINA_HOME环境变量是否为空,如果为空,就将当前目录设为CATALINA_HOME的值。接着判断当前目录下是否存在bin\catalina.bat,如果文件不存在,将当前目录的父目录设为CATALINA_HOME的值。根据笔者机器上Tomcat安装目录的层次结构,最后CATALINA_HOME的值被设为Tomcat的安装目录。如果环境变量CATALINA_HOME已经存在,则通过这个环境变量调用bin目录下的“catalina.bat start”命令。
-
Qrcode.jar(直接可以解压到maven本地库中)
2017-11-29 15:09:01后台生成二维码所需jar包,直接可以解压到maven本地库中 -
小程序资源下载、解压、保存到本地及本地文件的使用
2019-12-11 16:45:51第一次和更新则需要下载,如果存在之前的资源则将其删除),解压(压缩包需要解压,解压完成将压缩包删除,非压缩包略过), 保存到本地路径, (可以自行创建本地目录,把资源统一保存在改目录下),页面中使用本地... -
java解析zip压缩文件并将解压后的文件保存到本地
2021-06-16 17:14:45ZIpFile.entries() 获取的是压缩包内的所有文件(包括文件夹),不只是第一层的文件(和文件夹) 如果是用MultipartFile接收的Zip文件,需要先保存到本地 ,然后再解析: /** * MultipartFile存本地 * @param file 要... -
java 解压本地zip压缩文件
2015-01-13 15:03:29解压本地zip压缩文件 -
Android 下载Zip文件,并解压到本地,进行本地调用
2019-03-14 16:23:37如有不对的地方,望各路大神指点,小女子在此谢过O(∩_∩)O 点击此处下载demo,看完整代码,(*^__^*) 嘻嘻…… 1.下载文件 /** * 下载zip文件 * * @param url */ private void downloadFile(final ... -
解压压缩文件
2017-12-29 11:52:25Android读取本地文件,解压本地压缩文件并读取解压后的文件内容。【SD卡下的,assets下的压缩文件】 -
本地cmd命令打war包、解压war包
2019-09-05 15:50:53war包会生成在执行的目录下,但是会包含项目源文件和工作空间下的文件 建议在web程序的根目录下执行命令:jar -cvf xxx.war index.jsp WEB-INF/ 注意: 命令中xxx为自定义包名, * 前面要有空格 web程序的根... -
GitHub上下载到本地的zip解压后如何转成python文件在anaconda上运行?
2020-03-09 09:39:17GitHub上直接下载到本地的压缩包解压后,不是.py形式的文件,该如何变成.py文件?并且如何在anaconda上实现运行呢? !![图片说明]... -
Linux CentOS 6+复制本地前端文件压缩包解压到服务器端指定目录
2021-08-28 16:48:07mv /tmp/admin.zip /usr/data/apache-tomcat-7.0.82_80/webapps/xxx/admin cd /usr/data/apache-tomcat-7.0.82_80/webapps/xxx/admin unzip admin.zip rm –rf 被删除的文件或者文件夹名称 ... -
Python 技术篇-用zipfile库进行zip文件的压缩与解压实例演示,python压缩本地文件夹为zip文件并保留目录...
2021-01-21 10:10:22首先给大家演示下 zip 文件的解压方法。 提前读取,避免把压缩包自己加上去。 然后给大家看下 zip 文件...Python 技术篇-用zipfile库进行zip文件的压缩与解压实例演示,python压缩本地文件夹为zip文件并保留目录结构。 -
PC用PSV游戏下载工具NPS_Browser+本地缓存文件.zip
2021-01-12 10:52:06①解压:NPS_Browser_0.95 最新版本 ②复制:本地缓存文件夹中所有*.tsv文件到NPS_Browser_0.95目录中(任意文件夹亦可,只要你找的到) ③设置:NPS_Browser菜单→文件→设置→游戏列表、DLC、主题这些选项找到对应的... -
linux关于压缩解压tar包
2019-11-17 13:59:57tar -c: 建立压缩档案 ...下面的参数是根据需要在压缩或解压档案时可选的。 -z:有gzip属性的 -j:有bz2属性的 -Z:有compress属性的 -v:显示所有过程 -O:将文件解开到标准输出 下面的参数-f是必须的 ... -
Linux下常用文件解压(包括rpm、deb包的解压方法!)
2021-05-11 15:22:22Linux下常用文件解压inux下怎么解后缀名是gzip的文件?1.以.a为扩展名的文件:#tar xv file.a2.以.z为扩展名的文件:#uncompress file.Z3.以.gz为扩展名的文件:#gunzip file.gz4.以.bz2为扩展名的文件:#bunzip2 file.... -
在Linux服务器上解压rar压缩文件
2022-03-17 10:26:41Linux服务器上解压rar格式的压缩文件。服务器不自带解压rar文件的指令,需自己下载安装。 -
python解压gz
2020-12-02 16:01:43广告关闭云服务器1核2G首年99年,还有多款热门云产品满足您的上云需求执行程序,会在当前目录下生成aa.tar.gz文件二、解压defuntar(fname,dirs):解压tar.gz文件:paramfname:压缩文件名:paramdirs:解压后的存放路径:... -
speedamp可以本地搭一个服务器,无需解压
2014-07-13 20:57:20speedamp可以本地搭一个服务器,无需解压 -
winSCP【解压可用】
2018-03-08 10:59:50window本地直接上传下载文件到Linux服务器,支持连接多个Linux服务器,方便快捷,解压可用! -
zip压缩流转本地文件及解压
2016-01-07 15:55:49有一个需求,HTTP获取到zip文件的byte数组,需要转为本地的zip或是解压zip文件。 1. 用到的class import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream; import... -
如何在虚拟机上解压rar压缩文件?
2021-08-04 09:30:311.首先要现在所需要的压缩包:rarlinux-x64-5.3.0.tar.gz。...然后使用tar -xf rarlinux-x64-5.3.0.tar.gz解压这个压缩包。然后cd到这个文件,输入make命令。 2.然后就可以使用rar x xxx.rar这个命令解压文件。 -
Java实现minio文件服务web在线解压上传工具类
2021-06-04 13:33:17文章中的web解压工具类结合了minio文件服务,上传解压文件过程中,先解压成文件流,再将解压的文件又上传到minio文件服务器上。(不同本地文件服务,可以直接用文件copy的方式,cpoy到服务器指定静态文件服务的文件... -
Asp本地调试工具_绿色汉化版本解压就能用
2012-01-18 16:08:51Asp本地调试工具_绿色汉化版本解压就能用 -
ios 苹果手机解压工具解压文件教程
2020-02-18 11:02:231,安装解压软件 2,在苹果手机里面点击压缩文档,会跳转到打开页面 3,点击"用其他应用打开"按钮,会跳转到选择打开方式的页面 4,选择解压大师打开以后会自动跳转到解压大师的首页,文档已经自动... -
tar 解压,重命名
2021-05-10 23:23:33通常是在两台环境相似的机器上进行同步复制的时候,才有需要使用绝对路径进行打包。使用绝对路径打包时如果不指定相应的参数,tar会产生一句警告信息:"tar: Removing leading `/’ from member... -
带有打开密码的压缩包如何解压
2021-09-13 11:49:25然后再解压文件即可。 【压缩包解密大师】快速找回密码_轻松移除使用限制-奥凯丰okfone压缩包大师是奥凯丰推出的一款可以找回RAR打开密码以及移除RAR使用限制的软件,使用户可以自由编辑和打印RAR文件... -
如何在本地运行jsp文件
2020-11-22 18:54:59如何在本地运行jsp文件安装jdk下载tomcat启动tomcat 安装jdk jdk的安装建议,按默认安装路径 下载tomcat tomcat下载地址 建议 下载tomcat8。 因为如果打算在eclipse中运行jsp看页面效果的话,tomcat9没法用。(我用...