Java解压缩zip文件

下面实现的功能是zip文件中的图像文件解压到当前目录下,用jdk自带的处理zip文件的代码处理的,但是不能处理中文名称的文件,要不然就会出错。

Java代码  

  1. import java.io.BufferedInputStream;
  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.util.zip.ZipEntry;
  7. import java.util.zip.ZipInputStream;
  8. /**
  9. * 不能处理中文文件名
  10. */
  11. public class UnZip
  12. {
  13. private static final int buffer = 2048;
  14. public static void main(String[] args)
  15. {
  16. unZip("D:\\ss\\test.zip");
  17. }
  18. public static void unZip(String path)
  19. {
  20. int count = -1;
  21. int index = -1;
  22. String savepath = "";
  23. boolean flag = false;
  24. savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";
  25. try
  26. {
  27. BufferedOutputStream bos = null;
  28. ZipEntry entry = null;
  29. FileInputStream fis = new FileInputStream(path);
  30. ZipInputStream zis = new ZipInputStream(new BufferedInputStream(fis));
  31. while((entry = zis.getNextEntry()) != null)
  32. {
  33. byte data[] = new byte[buffer];
  34. String temp = entry.getName();
  35. flag = isPics(temp);
  36. if(!flag)
  37. continue;
  38. index = temp.lastIndexOf("/");
  39. if(index > -1)
  40. temp = temp.substring(index+1);
  41. temp = savepath + temp;
  42. File f = new File(temp);
  43. f.createNewFile();
  44. FileOutputStream fos = new FileOutputStream(f);
  45. bos = new BufferedOutputStream(fos, buffer);
  46. while((count = zis.read(data, 0, buffer)) != -1)
  47. {
  48. bos.write(data, 0, count);
  49. }
  50. bos.flush();
  51. bos.close();
  52. }
  53. zis.close();
  54. } catch (Exception e) {
  55. e.printStackTrace();
  56. }
  57. }
  58. public static boolean isPics(String filename)
  59. {
  60. boolean flag = false;
  61. if(filename.endsWith(".jpg") || filename.endsWith(".gif")  || filename.endsWith(".bmp") || filename.endsWith(".png"))
  62. flag = true;
  63. return flag;
  64. }
  65. }

下面是用的apache的zip文件处理包进行处理的,可以处理中文名称的文件,功能跟上面的一样。

Java代码  

  1. import java.io.BufferedOutputStream;
  2. import java.io.File;
  3. import java.io.FileOutputStream;
  4. import java.io.IOException;
  5. import java.io.InputStream;
  6. import java.util.Enumeration;
  7. import org.apache.tools.zip.ZipEntry;
  8. import org.apache.tools.zip.ZipFile;
  9. /**
  10. * 可以处理中文文件名
  11. */
  12. public class UnZip2
  13. {
  14. private static final int buffer = 2048;
  15. public static void main(String[] args)
  16. {
  17. unZip("D:\\ss\\test.zip");
  18. }
  19. public static void unZip(String path)
  20. {
  21. int count = -1;
  22. int index = -1;
  23. String savepath = "";
  24. boolean flag = false;
  25. File file = null;
  26. InputStream is = null;
  27. FileOutputStream fos = null;
  28. BufferedOutputStream bos = null;
  29. savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";
  30. try
  31. {
  32. ZipFile zipFile = new ZipFile(path);
  33. Enumeration<?> entries = zipFile.getEntries();
  34. while(entries.hasMoreElements())
  35. {
  36. byte buf[] = new byte[buffer];
  37. ZipEntry entry = (ZipEntry)entries.nextElement();
  38. String filename = entry.getName();
  39. index = filename.lastIndexOf("/");
  40. if(index > -1)
  41. filename = filename.substring(index+1);
  42. filename = savepath + filename;
  43. flag = isPics(filename);
  44. if(!flag)
  45. continue;
  46. file = new File(filename);
  47. file.createNewFile();
  48. is = zipFile.getInputStream(entry);
  49. fos = new FileOutputStream(file);
  50. bos = new BufferedOutputStream(fos, buffer);
  51. while((count = is.read(buf)) > -1)
  52. {
  53. bos.write(buf, 0, count );
  54. }
  55. fos.close();
  56. is.close();
  57. }
  58. zipFile.close();
  59. }catch(IOException ioe){
  60. ioe.printStackTrace();
  61. }
  62. }
  63. public static boolean isPics(String filename)
  64. {
  65. boolean flag = false;
  66. if(filename.endsWith(".jpg") || filename.endsWith(".gif")  || filename.endsWith(".bmp") || filename.endsWith(".png"))
  67. flag = true;
  68. return flag;
  69. }
  70. }

Java解压缩zip文件

时间: 2024-10-05 23:46:28

Java解压缩zip文件的相关文章

java 解压缩Zip文件 ziputil

package com.lanyuan.assembly.util; import java.io.BufferedOutputStream;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

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php

Atitit. 解压缩zip文件 的实现最佳实践 java c# .net php 1. Jdk zip 跟apache ant zip 1 2. Apache Ant包进行ZIP文件压缩,upzip 大概流程.. 1 3. 读文件名称ok,但是cant读取到input说NPE.. 2 4. Ant1.8.2.jar 2 5. #---详细code 2 6. 参考 4 1.  Jdk zip 跟apache ant zip 下面实现的功能是zip文件中的图像文件解压到当前目录下,用jdk自带的处

Java处理Zip文件

最近一直在找Java处理Zip文件方面的资料,感觉这几篇还不错,作个链接memo. Java使用基本JDK操作ZIP文件 http://blog.csdn.net/zhyh1986/article/details/7723649 Java解压带密码的Rar压缩文件 http://blog.csdn.net/zhyh1986/article/details/7724616 https://github.com/jukka/java-unrar Java解压和压缩带密码的zip文件 http://b

Java解压缩.zip、.tar.gz、.tar.bz2(支持中文)

本文介绍Java解压缩.zip..tar.gz..tar.bz2的方式. 对于zip文件:使用java.util.zip.ZipEntry 和 java.util.zip.ZipFile,通过设置Charset为StandardCharsets.UTF_8支持中文. 对于.tar.gz.tgz文件:可以看做先用tar打包,再使用gz进行压缩.使用commons-compress包的TarArchiveInputStream和GzipCompressorInputStream. 对于.tar.bz

java 解压缩zip 压缩zip

1.解压缩 package zuo.file.zip.unzip; import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.util.zip.ZipEntry; imp

java对 zip文件的压缩和解压(ant解决中文乱码)

说明: 1.对于压缩的文件,当文件名称是中文时,若使用JDK API中自带的类(java.util.zip.ZipEntry; java.util.zip.ZipOutputStream;)进行压缩,压缩完成后,可以看到压缩包中的文件名称是乱码(文件的内容无乱码),所以使用ANT中的ant.jar中的类(org.apache.tools.zip.ZipEntry; org.apache.tools.zip.ZipOutputStream;)用来解决此问题: 2.解压缩时,如果压缩包中为空,则创建

unzip详解,Linux系统如何解压缩zip文件?

通常在使用linux时会自带了unzip,但是在最小化安装之后,可能系统里就无法使用此命令了. yum list unzip 查看是否安装 如果没安装过就继续 yum install unzip 安装完毕后就可以使用zip和unzip命令去压缩和解压缩zip文件了! 语法:unzip [-cflptuvz][-agCjLMnoqsVX][-P <密码>][zip文件][文件][-d <目录>][-x <文件>] 或 unzip [-Z] 举例: #比如我刚下载了一个名字

java解压缩zip

依赖的包: <!-- https://mvnrepository.com/artifact/org.apache.ant/ant --> <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</artifactId> <version>1.8.2</version> </dependency> package com.jd.dl

java解压缩一个文件

/** * 解压缩一个文件 * * @param zipFile * 压缩文件 * @param folderPath * 解压缩的目标目录 * @throws IOException * 当解压缩过程出错时抛出 */ public static void unZipFile(File zipFile, String folderPath) throws ZipException, IOException { String sub = zipFile.getName(); int pos = s