压缩包解压错误压缩包

有钱没钱回家过年,给家人的礼物都准备好了么?威锋应用推荐在这里提前祝大家春节快乐...
软件上一些小的问题会让用户失望,久而久之,它会影响到苹果硬件的用户体验,所以苹果...
让我们充满期待进入新的一年,来品尝开发商们精心烹制、即将上席的开年大餐吧。
这是苹果官方第一次出售虚拟现实设备,虽然不是苹果打造的。
尽管苹果说这是不会发生的事情,然而还是有很多人认为我们会在 2 年内看到一款运行 Ma...
我们并不是说山寨线,而是市面上一些不合格的产品。
这位朋友再次向我们诠释了,生活就是创作的源泉。
过去多年技术的发展让二合一设备的发展更快,这类设备变得更强。
相信在每个人心中,总有一些值得回忆的二次元角色,游戏的也好,动漫的也好,如果能够...
互联网发达的今天,只需要打开手机,点点鼠标,就能看到来自网络世界四面八方的精彩资...
《Town Jump》是 StoneFalcon 开发的一款跳跃类游戏,在看似唯美的场景里,危险却无处...
相信只要一提起赛车游戏,无论是房车、卡车还是F1、摩托车,玩家的第一印象绝对都是爽...
《Crossy Maze》是 Tigrido 推出的一款冒险闯关作品,邪恶的长角恶魔将 Pip 的女友给...
游戏中讲述的是一个新手冒险家在无意间发现了一个洞窟,而在洞窟中找到了数不尽的宝藏...
说起《泡泡堂》这款游戏,在千禧年左右可以说是拥有了超高人气,并在很长一段时间内成...
当然是不薄的了,不过对这方面功能有需要的人也不会在乎这点厚度。
要知道,很多公司的平板都是直接配送手写笔的,包括微软和三星这样的大牌。
苹果表示,有 MFi 认证的助听器产品比传统的助听器更出色,理应获得美国联邦通讯委员...
其实手机壳还是小一点比较好,拿起来不那么困难,但是如果有特殊作用的话,那就另当别...
难怪没有一颗螺丝钉,原来是酷炫的分段式设计,这下逼格又不知高到哪里去了。
飞利浦这大腿抱得够紧的,不过相对来说,适用于苹果的配件的确要更好卖一些。
伴随着iPhone产品的热销,市面上有满足各种消费需求的保护套产品。
常规智能手机的像素已经从200万飞速长进到了2000万级别,但是对于传统数码相机来说,...
zip文件解压错误怎么办!??
注册时间 最后登录
在线时间0 小时 UID
主题帖子人气
小苹果, 积分 11, 距离下一级还需 39 积分
本帖最后由 鬼、混混 于
11:46 编辑
请问为什么归档工具会解压失败。
(20.21 KB, 下载次数: 9)
09:04 上传
注册时间 最后登录
在线时间1909 小时 UID
主题帖子人气
/ 玩 / 物 / 丧 / 志 /
解压最好是:解压文件名是英文名,不要有特殊符号。 再就是解压软件问题,可以换换别的解压软件,很多解压软件不全是完美的,删除正在使用的第三方解压软件,用系统自带的解压,解压后再从垃圾箱里还原。也有可能解压文件,数据不完整,需要重新下载或让压缩人重新压缩。
/ 玩 / 物 / 丧 / 志 /
注册时间 最后登录
在线时间0 小时 UID
主题帖子人气
解压最好是:解压文件名是英文名,不要有特殊符号。 再就是解压软件问题,可以换换别的解压软件,很多解压 ...
威锋旗下产品
Hi~我是威威!
沪公网安备 29号 丨 沪ICP备号-1 丨 深公安网监备案号 5
增值电信业务经营许可证:
Powered by Discuz!Java 中 解压缩文件 ZIP - java小强 - ITeye技术网站
博客分类:
传入一组文件,将文件列表打包为ZIP文件,传入ZIP文件将文件解压缩到一个指定文件夹,下面是这个实例的实现
使用到了ANT的工具类,所以要引入ant.jar文件到工程中
对于压缩建立一个工具类:
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.io.OutputS
import java.util.zip.ZipOutputS
import org.apache.tools.zip.ZipE
* ZIP操作工具类
* @说明 注意引入ant.jar文件
* @author cuisuqiang
* @version 1.0
public class Zip {
* 压缩文件列表到某ZIP文件
* @param zipFilename 要压缩到的ZIP文件
* @param paths 文件列表,多参数
* @throws Exception
public static void compress(String zipFilename, String... paths)
throws Exception {
compress(new FileOutputStream(zipFilename), paths);
* 压缩文件列表到输出流
* @param os 要压缩到的流
* @param paths 文件列表,多参数
* @throws Exception
public static void compress(OutputStream os, String... paths)
throws Exception {
ZipOutputStream zos = new ZipOutputStream(os);
for (String path : paths) {
if (path.equals(""))
java.io.File file = new java.io.File(path);
if (file.exists()) {
if (file.isDirectory()) {
zipDirectory(zos, file.getPath(), file.getName()
+ File.separator);
zipFile(zos, file.getPath(), "");
zos.close();
private static void zipDirectory(ZipOutputStream zos, String dirName,
String basePath) throws Exception {
File dir = new File(dirName);
if (dir.exists()) {
File files[] = dir.listFiles();
if (files.length & 0) {
for (File file : files) {
if (file.isDirectory()) {
zipDirectory(zos, file.getPath(), basePath
+ file.getName().substring(
file.getName().lastIndexOf(
File.separator) + 1)
+ File.separator);
zipFile(zos, file.getPath(), basePath);
ZipEntry ze = new ZipEntry(basePath);
zos.putNextEntry(ze);
private static void zipFile(ZipOutputStream zos, String filename,
String basePath) throws Exception {
File file = new File(filename);
if (file.exists()) {
FileInputStream fis = new FileInputStream(filename);
ZipEntry ze = new ZipEntry(basePath + file.getName());
zos.putNextEntry(ze);
byte[] buffer = new byte[8192];
int count = 0;
while ((count = fis.read(buffer)) & 0) {
zos.write(buffer, 0, count);
fis.close();
String... paths 是传入的文件列表,输出流可以穿文件流也可以传文件路径名称
压缩一组文件:
package com.xidian.
import java.io.FileOutputS
import mmon.Z
* 压缩文件
* @author cuisuqiang
* @version 1.0
public class TestCompress {
public static void main(String[] args) {
// 要压缩的文件列表
String path01 = "C:\\a";
String path02 = "C:\\test.txt";
FileOutputStream os = new FileOutputStream("C:\\a.zip"); // 输出的ZIP文件流
press(os, path01, path02);
} catch (Exception e) {
e.printStackTrace();
由于已经写了工具类,调用看起来非常清晰
解压这个压缩包:
package com.xidian.
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.util.ArrayL
import java.util.zip.ZipE
import java.util.zip.ZipInputS
* 解压缩测试
* @author cuisuqiang
* @version 1.0
public class EctractZip {
@SuppressWarnings( { "unchecked", "static-access" })
public static void main(String[] args) {
EctractZip z = new EctractZip();
ArrayList&String& a = z.Ectract("C:\\a.zip", "C:\\tmp\\"); // 返回解压缩出来的文件列表
for(String s : a){
System.out.println(s);
* @param sZipPathFile 要解压的文件
* @param sDestPath 解压到某文件夹
@SuppressWarnings("unchecked")
public static ArrayList Ectract(String sZipPathFile, String sDestPath) {
ArrayList&String& allFileName = new ArrayList&String&();
// 先指定压缩档的位置和档名,建立FileInputStream对象
FileInputStream fins = new FileInputStream(sZipPathFile);
// 将fins传入ZipInputStream中
ZipInputStream zins = new ZipInputStream(fins);
ZipEntry ze =
byte[] ch = new byte[256];
while ((ze = zins.getNextEntry()) != null) {
File zfile = new File(sDestPath + ze.getName());
File fpath = new File(zfile.getParentFile().getPath());
if (ze.isDirectory()) {
if (!zfile.exists())
zfile.mkdirs();
zins.closeEntry();
if (!fpath.exists())
fpath.mkdirs();
FileOutputStream fouts = new FileOutputStream(zfile);
allFileName.add(zfile.getAbsolutePath());
while ((i = zins.read(ch)) != -1)
fouts.write(ch, 0, i);
zins.closeEntry();
fouts.close();
fins.close();
zins.close();
} catch (Exception e) {
System.err.println("Extract error:" + e.getMessage());
return allFileN
请您到ITEYE网站看原创,谢谢!
自建博客地址: ,内容与ITEYE同步!
解压其实非常简单,因为JDK 中有一个ZipInputStream对象,只需要使用他为我们服务即可!
下载次数: 79
cuisuqiang
浏览: 1403715 次
来自: 北京
浏览量:1234995
参考代码实践了一个,很实用,对于字典项不多而且确定内容都可以使 ...
贴一个项目中采用的定时数据同步器&!-- sql到ora ...
好全面,,正在测试用
wdhdmx 写道三个read 方法都是一个字节一个字节的读, ...本教程适用于安卓手机,在手机端上安装含数据包的游戏,本站含数据包的游戏格式为ZIP/RAR。首先,由于需要复制黏贴文件,所以,建议安装&ES文件浏览器。以下教程截图均以ES文件浏览器为工具,其他手机文件管理器也可参考。安装ES文件浏览器(以下简称ES)后,打开ES,找到你所下载的游戏文件。O代表手机存储,比如,小编的手机存储就是25.90GB那个。extSdCard代表手机里插的microSD内存卡,就是图中7.39GB那个。找到了自己所下载的压缩包,小编这里下载的&饥饿的鲨鱼进化无限金币&的文件&“jiedeshayujhwxjb.rar”。手指按住,选中该文件。最下面一行,点击解压字样。解压到当前文件夹即可。截图中Android文件夹如果命名错误,请重命名成Android,一个字母都不能错,包括大小写。解压完后,找到那个文件夹,文件夹名字和压缩包名字是一样的,小编这里是(jiedeshayujhwxjb)。打开文件夹。先把jiedeshayujhwxjb.apk点击一下,然后安装,安装完后不要打开。然后还是那个文件夹,选中Android文件夹,点击左下角“复制”。然后回到手机内置存储的根目录,小编的就是0这个内置存储根目录。内置存储根目录一般都会有Android文件夹,点击左下角粘帖。会提示覆盖,点击覆盖即可。安装成功,运行游戏。
近年来,男女恋人因游戏发生吵架甚至动手的例子屡见不鲜,众所周知,一般的男孩子都喜欢玩游戏,就好比女孩子喜欢逛街一样,但是在男朋友玩游戏时突然关掉他的机器!就好比你在逛街的时候被人甩了一个耳光一样,这种滋味心里是非常不好受了,所以做出一些比较激动的事情也就可想而知了。既然男孩子能理解你们,你们为什么不能体谅一下你的恋人?
付乐莹,北京电影学院2014级表演系,20岁,身高168,体重49KG。特长唱歌、跳舞,爱好电影、看书、健身、旅行和美食。曾录制湖南卫视《天天向上》中国美女地理江西站。
扫描二维码当前访客身份:游客 [
当前位置:
发布于 日 15时,
根据文件打交道比较多,分享一个一直在使用的ZIP文件压缩和解压缩工具类。需要用到commons-io和ant依赖:&dependency&&&&groupId&commons-io&/groupId&&&&artifactId&commons-io&/artifactId&&&&version&2.4&/version&&/dependency&&dependency&&&&groupId&org.apache.ant&/groupId&&&&artifactId&ant&/artifactId&&&&version&1.9.1&/version&&/dependency&
代码片段(2)
1.&[代码]代码程序&&&&
package com.mon.
import java.io.BufferedInputS
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.io.InputS
import java.io.OutputS
import java.util.ArrayL
import java.util.E
import java.util.L
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputS
import mons.io.FileU
import mons.io.FilenameU
import mons.io.IOU
import mons.lang.StringU
import org.apache.tools.zip.ZipE
import org.apache.tools.zip.ZipF
import org.apache.tools.zip.ZipOutputS
* ZIP压缩工具类
* @version $Id: MbillZipUtil.java, v 0.1
下午07:32:37 obullxl Exp $
public class MbillZipUtil {
* ZIP文件后缀名
public static final String ZIP_FILE_SUFFIX = ".zip";
* 对文件列表进行压缩
* 注意:&br/&
1、文件如果为目录,会循环递归压缩目录和里面的文件;&br/&
2、如果文件不存在,则直接忽略;
* @param zip ZIP包文件路径
* @param files 文件列表
public static final void zip(String zip, List&String& files) {
FileOutputStream fileOutputStream = new FileOutputStream(zip);
CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32());
ZipOutputStream out = new ZipOutputStream(cos);
for (String file : files) {
// 单个文件或目录
compress(out, new File(file));
IOUtils.closeQuietly(out);
} catch (Exception e) {
throw new RuntimeException("[压缩文件]-压缩文件异常, ZIP[" + zip + "], Files[" + files + "]!", e);
* 压缩文件
* @param out ZIP输出流
* @param file 待压缩的文件或是目录
public static final void compress(ZipOutputStream out, File file) {
if (file.isDirectory()) {
compressDirectory(out, file);
compressFile(out, file);
* 压缩目录
* 注意:只压缩目录下所有非ZIP文件
* @param out ZIP输出流
* @param dir 文件目录
public static final void compressDirectory(ZipOutputStream out, File dir) {
// 目录不存在
if (!dir.exists()) {
// 压缩目录下所有的文件
File[] files = dir.listFiles();
for (int i = 0; i & files. i++) {
// 遍历压缩所有非ZIP文件
if (files[i].getName().indexOf(ZIP_FILE_SUFFIX) & 0) {
compressFile(out, files[i]);
} catch (Exception e) {
throw new RuntimeException("[压缩文件]-压缩目录异常, ZIP[" + out + "], DIR[" + dir + "]!", e);
* 压缩一个文件,如果文件不存在,则直接忽略
* @param out ZIP输出流
* @param file 待压缩的文件
public static final void compressFile(ZipOutputStream out, File file) {
// 文件不存在
if (!file.exists()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
ZipEntry entry = new ZipEntry(file.getName());
out.putNextEntry(entry);
// 复制数据
IOUtils.copy(bis, out);
// 关闭输入流
IOUtils.closeQuietly(bis);
} catch (Exception e) {
throw new RuntimeException("[压缩文件]-压缩目录异常, ZIP[" + out + "], File[" + file + "]!", e);
* 解压缩ZIP文件,递归解压缩ZIP内的文件夹
* @param zip ZIP文件绝对路径
* @param path 解压的文件目录
* @return 解压缩后的文件名列表,包含ZIP内的文件子目录,对于空ZIP文件,返回为空列表。
* @throws Exception 解压异常。
@SuppressWarnings("unchecked")
public static final List&String& unzip(String zip, String path) throws Exception {
// 文件列表
List&String& files = new ArrayList&String&();
ZipFile zipfile = new ZipFile(zip);
Enumeration&ZipEntry& entries = zipfile.getEntries();
if (entries == null || !entries.hasMoreElements()) {
// 空ZIP包
// 创建目标文件目录
FileUtils.forceMkdir(new File(path));
// 遍历所有文件
while (entries.hasMoreElements()) {
ZipEntry zipEntry = entries.nextElement();
String fname = zipEntry.getName();
// 创建目录
if (zipEntry.isDirectory()) {
String fpath = FilenameUtils.normalize(path + "/" + fname);
FileUtils.forceMkdir(new File(fpath));
// 复制文件目录
if (StringUtils.contains(fname, "/")) {
String tpath = StringUtils.substringBeforeLast(fname, "/");
String fpath = FilenameUtils.normalize(path + "/" + tpath);
FileUtils.forceMkdir(new File(fpath));
// 复制文件内容
InputStream input =
OutputStream output =
input = zipfile.getInputStream(zipEntry);
String file = FilenameUtils.normalize(path + "/" + fname);
output = new FileOutputStream(file);
IOUtils.copy(input, output);
} finally {
IOUtils.closeQuietly(input);
IOUtils.closeQuietly(output);
// 解压成功单个文件名
files.add(fname);
// 解压后的文件名列表
} finally {
ZipFile.closeQuietly(zipfile);
MbillZipUtil.java&~&6KB&&&&
package com.mon.
import java.io.BufferedInputS
import java.io.F
import java.io.FileInputS
import java.io.FileOutputS
import java.io.InputS
import java.io.OutputS
import java.util.ArrayL
import java.util.E
import java.util.L
import java.util.zip.CRC32;
import java.util.zip.CheckedOutputS
import mons.io.FileU
import mons.io.FilenameU
import mons.io.IOU
import mons.lang.StringU
import org.apache.tools.zip.ZipE
import org.apache.tools.zip.ZipF
import org.apache.tools.zip.ZipOutputS
* ZIP压缩工具类
* @version $Id: MbillZipUtil.java, v 0.1
下午07:32:37 obullxl Exp $
public class MbillZipUtil {
* ZIP文件后缀名
public static final String ZIP_FILE_SUFFIX = ".zip";
* 对文件列表进行压缩
* 注意:&br/&
1、文件如果为目录,会循环递归压缩目录和里面的文件;&br/&
2、如果文件不存在,则直接忽略;
* @param zip ZIP包文件路径
* @param files 文件列表
public static final void zip(String zip, List&String& files) {
FileOutputStream fileOutputStream = new FileOutputStream(zip);
CheckedOutputStream cos = new CheckedOutputStream(fileOutputStream, new CRC32());
ZipOutputStream out = new ZipOutputStream(cos);
for (String file : files) {
// 单个文件或目录
compress(out, new File(file));
IOUtils.closeQuietly(out);
} catch (Exception e) {
throw new RuntimeException("[压缩文件]-压缩文件异常, ZIP[" + zip + "], Files[" + files + "]!", e);
* 压缩文件
* @param out ZIP输出流
* @param file 待压缩的文件或是目录
public static final void compress(ZipOutputStream out, File file) {
if (file.isDirectory()) {
compressDirectory(out, file);
compressFile(out, file);
* 压缩目录
* 注意:只压缩目录下所有非ZIP文件
* @param out ZIP输出流
* @param dir 文件目录
public static final void compressDirectory(ZipOutputStream out, File dir) {
// 目录不存在
if (!dir.exists()) {
// 压缩目录下所有的文件
File[] files = dir.listFiles();
for (int i = 0; i & files. i++) {
// 遍历压缩所有非ZIP文件
if (files[i].getName().indexOf(ZIP_FILE_SUFFIX) & 0) {
compressFile(out, files[i]);
} catch (Exception e) {
throw new RuntimeException("[压缩文件]-压缩目录异常, ZIP[" + out + "], DIR[" + dir + "]!", e);
* 压缩一个文件,如果文件不存在,则直接忽略
* @param out ZIP输出流
* @param file 待压缩的文件
public static final void compressFile(ZipOutputStream out, File file) {
// 文件不存在
if (!file.exists()) {
BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));
ZipEntry entry = new ZipEntry(file.getName());
out.putNextEntry(entry);
// 复制数据
IOUtils.copy(bis, out);
// 关闭输入流
IOUtils.closeQuietly(bis);
} catch (Exception e) {
throw new RuntimeException("[压缩文件]-压缩目录异常, ZIP[" + out + "], File[" + file + "]!", e);
* 解压缩ZIP文件,递归解压缩ZIP内的文件夹
* @param zip ZIP文件绝对路径
* @param path 解压的文件目录
* @return 解压缩后的文件名列表,包含ZIP内的文件子目录,对于空ZIP文件,返回为空列表。
* @throws Exception 解压异常。
@SuppressWarnings("unchecked")
public static final List&String& unzip(String zip, String path) throws Exception {
// 文件列表
List&String& files = new ArrayList&String&();
ZipFile zipfile = new ZipFile(zip);
Enumeration&ZipEntry& entries = zipfile.getEntries();
if (entries == null || !entries.hasMoreElements()) {
// 空ZIP包
// 创建目标文件目录
FileUtils.forceMkdir(new File(path));
// 遍历所有文件
while (entries.hasMoreElements()) {
ZipEntry zipEntry = entries.nextElement();
String fname = zipEntry.getName();
// 创建目录
if (zipEntry.isDirectory()) {
String fpath = FilenameUtils.normalize(path + "/" + fname);
FileUtils.forceMkdir(new File(fpath));
// 复制文件目录
if (StringUtils.contains(fname, "/")) {
String tpath = StringUtils.substringBeforeLast(fname, "/");
String fpath = FilenameUtils.normalize(path + "/" + tpath);
FileUtils.forceMkdir(new File(fpath));
// 复制文件内容
InputStream input =
OutputStream output =
input = zipfile.getInputStream(zipEntry);
String file = FilenameUtils.normalize(path + "/" + fname);
output = new FileOutputStream(file);
IOUtils.copy(input, output);
} finally {
IOUtils.closeQuietly(input);
IOUtils.closeQuietly(output);
// 解压成功单个文件名
files.add(fname);
// 解压后的文件名列表
} finally {
ZipFile.closeQuietly(zipfile);
开源中国-程序员在线工具:
相关的代码(323)
0回/1990阅
代码质量不错哟.&
2楼:徐林 发表于
引用来自“luokery”的评论代码质量不错哟.&这是实际使用的代码~
3楼:WTX 发表于
files[i].getName().indexOf(ZIP_FILE_SUFFIX) &&0
这里貌似错了吧~~
4楼:徐林 发表于
引用来自“WTX”的评论files[i].getName().indexOf(ZIP_FILE_SUFFIX) &&0
这里貌似错了吧~~只压缩非zip文件,哪里错了呢?
5楼:WTX 发表于
引用来自“徐林”的评论引用来自“WTX”的评论files[i].getName().indexOf(ZIP_FILE_SUFFIX) &&0
这里貌似错了吧~~只压缩非zip文件,哪里错了呢?&download.zip.temp&
6楼:徐林 发表于
引用来自“WTX”的评论引用来自“徐林”的评论引用来自“WTX”的评论files[i].getName().indexOf(ZIP_FILE_SUFFIX) &&0
这里貌似错了吧~~只压缩非zip文件,哪里错了呢?&download.zip.temp&牛,很仔细,谢谢提醒,我修改一下。这个程序跑了1年多了,没有问题,主要是都是以.zip结尾。
7楼:zlsj80 发表于
有中文命名的会乱码
8楼:bolean 发表于
对的,中文乱码~
9楼:bolean 发表于
您这里没有递归
10楼:徐林 发表于
引用来自“bamboomoon”的评论您这里没有递归在实际项目中,ZIP包只有文件,所有这个工具类比较简单。
11楼:徐林 发表于
引用来自“bamboomoon”的评论对的,中文乱码~内部文件有中文是OK的,我们实际项目中,ZIP包中的文件名是中文的非常常见!
开源从代码分享开始
徐林的其它代码

我要回帖

更多关于 怎么解压压缩包 的文章

 

随机推荐