zip与unzip
来源:互联网 发布:macos mysql 安装 编辑:程序博客网 时间:2024/06/05 15:20
大家在用java做zip压缩解压缩时,java提供了原生的zip类
- import java.util.zip.CRC32;
- import java.util.zip.CheckedOutputStream;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
- import java.util.zip.ZipOutputStream;
但是实际应用中是,我们有两个问题
1.中文路径压缩解压缩问题,我网上找了找方案,都是要改源类库,如果有不用的请赐教
2.是我在实际应用中发现的,
- unziping resultFile\resultFile1.txt
- d:\resultFile\resultFile1.txt
- f:d:\resultFile\resultFile1.txt
- <span style="color: #ff0000;">java.util.zip.ZipException: invalid entry compressed size (expected 4294967295 but got 7 bytes)</span>
- at java.util.zip.ZipInputStream.readEnd(ZipInputStream.java:391)
- at java.util.zip.ZipInputStream.read(ZipInputStream.java:156)
- at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:105)
- at TestZip.unzip(TestZip.java:55)
- at TestZip.main(TestZip.java:93)
原因不明,但我估计和压缩的版本有关,zip来源是我同学用c#压缩的东西,试了很多种方法基于java原生zip的方法都不行,后来尝试了commons-compress-1.1.jar,apache的开源类库(话说很多java原生的类库比起apache的工具类都差好多),解压缩实现如下,是改了网上某人的,他的方法有点问题
- public static void decompress(String srcFile, String destPath) {
- try {
- File outFile = new File(destPath);
- if (!outFile.exists()) {
- outFile.mkdirs();
- }
- ZipFile zipFile = new ZipFile(srcFile);
- Enumeration<?> en = zipFile.getEntries();
- ZipArchiveEntry zipEntry = null;
- while (en.hasMoreElements()) {
- zipEntry = (ZipArchiveEntry) en.nextElement();
- if (zipEntry.isDirectory()) {
- // mkdir directory
- String dirName = zipEntry.getName();
- dirName = dirName.substring(0, dirName.length() - 1);
- File f = new File(outFile.getPath() + "/" + dirName);
- f.mkdirs();
- }
- else {
- // unzip file
- File f = new File(outFile.getPath() + "/" + zipEntry.getName());
- <span style="color: #ff0000;">if(!f.getParentFile().exists()){
- f.getParentFile().mkdirs();
- }</span>
- f.createNewFile();
- InputStream in = zipFile.getInputStream(zipEntry);
- OutputStream out = new FileOutputStream(f);
- IOUtils.copy(in, out);
- out.close();
- in.close(); } }
- zipFile.close(); }
- catch (Exception e)
- { e.printStackTrace();
- }
- }
红字是我加的,使用无非是
- decompress("d:\\resultFile.zip","e:\\1",);
附件是我找的commons-compress-1.1.jar
0 0
- zip与unzip命令
- 【Linux】 zip与unzip
- zip与unzip
- zip与unzip
- java实现zip与unzip
- java实现zip与unzip
- java实现zip与unzip
- zip/unzip
- zip&unzip
- tar、zip 、unzip 打包与压缩
- Linux zip 与 unzip 的用法
- Linux zip 与 unzip命令详解
- linux命令之zip压缩与unzip解压缩命令
- linux下压缩与解压(zip、unzip、tar)详解
- linux下压缩与解压(zip、unzip、tar)详解
- linux下压缩与解压(zip、unzip、tar)详解
- zip、unzip工具类
- Linux zip/unzip
- 进程间通信——信号
- BZOJ 1176: [Balkan2007]Mokia CDQ分治,容斥
- 你所应该了解的HTTP协议(一)
- Could not get unknown property 'mysigns' for SigningConfig container.
- idea tomcat 内存溢出
- zip与unzip
- 11.ExpandableListView
- C# 获取Byte[]类型的内存地址
- 利用Java和photoShop实现照片拼图
- 对论文 You Only Look Once: Unified, Real-Time Object Detection 的理解 (一)
- 大神养成之路上的经验教训,持续不定期更新ing(3)
- runOnUiThread() UI跟新
- groovy 闭包实战教程
- 问题解决