解压Zip

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 org.apache.tools.zip.ZipFile;

/**
 * 可以处理中文文件名
 */
public class UnZip2
{
    private static final int buffer = 2048;

    public static void main(String[] args)
    {
        unZip("D:\\ss\\test.zip");
    }

    public static void unZip(String path)
    {
        int count = -1;
        int index = -1;
        String savepath = "";
        boolean flag = false;

        File file = null;
        InputStream is = null;
        FileOutputStream fos = null;
        BufferedOutputStream bos = null;

        savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";

        try
        {
            ZipFile zipFile = new ZipFile(path); 

            Enumeration<?> entries = zipFile.getEntries();

            while(entries.hasMoreElements())
            {
                byte buf[] = new byte[buffer]; 

                ZipEntry entry = (ZipEntry)entries.nextElement(); 

                String filename = entry.getName();
                index = filename.lastIndexOf("/");
                if(index > -1)
                    filename = filename.substring(index+1);

                filename = savepath + filename;

                flag = isPics(filename);
                if(!flag)
                    continue;

                file = new File(filename);
                file.createNewFile();

                is = zipFile.getInputStream(entry); 

                fos = new FileOutputStream(file);
                bos = new BufferedOutputStream(fos, buffer);

                while((count = is.read(buf)) > -1)
                {
                    bos.write(buf, 0, count );
                } 

                fos.close(); 

                is.close();
            } 

            zipFile.close(); 

        }catch(IOException ioe){
            ioe.printStackTrace();
        }
    } 

    public static boolean isPics(String filename)
    {
        boolean flag = false;

        if(filename.endsWith(".jpg") || filename.endsWith(".gif")  || filename.endsWith(".bmp") || filename.endsWith(".png"))
            flag = true;

        return flag;
    }
}
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;

public class ImageFileService {
        private static final int buffer = 2048;

        public static void main(String[] args) {
            unZip("D:\\YXDoc\\20131212001.zip");
        }

        public static void unZip(String path) {
            int count = -1;
            int index = -1;

            String savepath = "";
            boolean flag = false;
            // 解压路径
            savepath = path.substring(0, path.lastIndexOf("\\")) + "\\";
            try {
                BufferedOutputStream bos = null;
                ZipEntry entry = null;
                FileInputStream fis = new FileInputStream(path);
                ZipInputStream zis = new ZipInputStream(
                        new BufferedInputStream(fis));

                while ((entry = zis.getNextEntry()) != null) {
                    byte data[] = new byte[buffer];
                    String temp = entry.getName();
                    flag = isPics(temp);
                    if (!flag)
                        continue;
                    index = temp.lastIndexOf("/");
                    if (index > -1)
                        temp = temp.substring(index + 1);
                    temp = savepath + temp;
                    File f = new File(temp);
                    f.createNewFile();
                    FileOutputStream fos = new FileOutputStream(f);
                    bos = new BufferedOutputStream(fos, buffer);
                    while ((count = zis.read(data, 0, buffer)) != -1) {
                        bos.write(data, 0, count);
                    }
                    bos.flush();
                    bos.close();
                }
                zis.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        public static boolean isPics(String filename) {
            boolean flag = false;
            if (filename.endsWith(".jpg") || filename.endsWith(".gif")
                    || filename.endsWith(".bmp") || filename.endsWith(".png"))
                flag = true;
            return flag;
        }
}
<%@ page language="java" import="java.util.*,java.io.*" pageEncoding="GBK"%>
<%
String path =request.getContextPath();
String basePath =request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
String localPath=(String)request.getAttribute("localPath");
String fileName=(String)request.getAttribute("fileName");
localPath="D://";
fileName="12323.pdf";

%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
</head>
<% out.clear();
   out = pageContext.pushBody();
   response.setContentType("application/pdf");
   try {
    String sourcePDFPath =localPath+fileName;
    //判断该路径下的文件是否存在
    File file = new File(sourcePDFPath);
    if (file.exists()){
      DataOutputStream ou = new DataOutputStream(response.getOutputStream());
      DataInputStream in = new DataInputStream(new FileInputStream(sourcePDFPath));
      byte[] b = new byte[2048];
      while ((in.read(b)) != -1){
         ou.write(b);
         ou.flush();
      }
      in.close();
      ou.close();
    }else{
     out.print(sourcePDFPath + " 文件不存在!");
    }
   }catch (Exception e) {
     out.println(e.getMessage());
   }%>
<body>
</body>
</html> 
时间: 2024-10-29 19:10:46

解压Zip的相关文章

android zip4j之--解压zip文件并实时显示解压进度

Zip文件是我们经常用到压缩文件格式,android中在进行网络请求大批量数据时,通常会采用传递zip文件,这样做即可以减少网络流量的消耗,加快请求的响应速度,又可以减少对存储空间的要求,所以当我们将zip文件读取回来的时候,如何解压就是一个要解决的问题,虽然java本身提供了zip相关的API,但不是很强大,所以我们采用apache开源组织的zip4j,通过这个jar包可以十分轻松的解压zip文件. 回到项目中去,项目中有个需求是从服务器请求杂志,请求回来后给读者展示,但是由于公司自己做的电子

Cocos2d-x3.0 解压zip

2dx3.0为我们集成了unzip库,帮助我们实现对文件的解压,但使用起来略显复杂我这里封装了一个解压工具库.分享一下. 工具类下载:http://download.csdn.net/detail/qqmcy/7288151 先引入头文件 #include "DJZipArchive.h" 实现解压代码 //获取文件路径 const char* file_path = FileUtils::getInstance()->fullPathForFilename("hell

PHP压缩与解压Zip(PHPZip类)

<?php     class PHPZip     {         private $ctrl_dir     = array();         private $datasec      = array();         /**********************************************************          * 压缩部分          **********************************************

通过javascript在网页端解压zip文件并查看压缩包内容

WEB前端解压ZIP压缩包 web前端解压zip文件有什么用: 只考虑标准浏览器的话, 服务器只要传输压缩包到客户端, 节约了带宽, 而且节约了传输时间, 听起来好像很厉害的说:     如果前端的代码很多, 而且包含大副的图片,那么就可以把js和css和jpg和png等各种数据通过服务端打包成zip传送到浏览器, 浏览器负责解压, css实用动态生成插入到dom中,js也用globalEval直接执行, jpg或者png各种图片文件由blob流转化为image, 直接插入到浏览器中: html

工具类-解压zip包和压缩照片

    由于目前系统在服务器上的资料占用空间太大.查了原因之后发现时因为照片没有经过压缩.但是所有照片都在zip包里,比较犯愁.于是写了如下的工具类.主要实现的功能是:扫描一个文件夹下的所有zip包,然后把zip包进行解压.拿到所有的照片.如果照片大于300KB就进行等比例压缩.压缩之后重新打包成zip包.替换掉原来的zip包.     并且可以可有选择是否等比压缩,压缩比例等.代码如下: filetest类: package daoimpl; import java.io.BufferedIn

redhat下安装mysql 5.6.20,解压zip包,查看已经安装过的mysql,卸载rpm安装包,安装mysql服务器端和客户端,修改mysql用户名,登陆mysql,启动关闭mysql

 1 将相关的mysql rpm包上传到redhat上 2  我的电脑是Redhat 6.*版本,所以这里使用上面一个 3  解压zip包 4  安装以下几个rpm MySQL-client-advanced-5.6.20-1.el6.x86_64.rpm MySQL-server-advanced-5.6.20-1.el6.x86_64.rpm 5  查看已经安装过的mysql rpm –aq | grep mysql 结果: mysql-libs-5.1.66-2.el6_3.x86_6

ubuntu解压zip文件中文乱码问题

通过unzip行命令解压,指定字符集 unzip -O CP936 xxx.zip 注:xxx.zip为需要解压的文件名 ubuntu解压zip文件中文乱码问题

linux解压zip、bz、bz2、z、gz、tar(解包)

zip: 压缩: zip [-AcdDfFghjJKlLmoqrSTuvVwXyz$][-b <工作目录>][-ll][-n <字尾字符串>][-t <日期时间>][-<压缩效率>][压缩文件][文件...][-i <范本样式>][-x <范本样式>] 解压: unzip [选项] 压缩文件名.zip 选项:    -x 文件列表 解压缩文件,但不包括指定的file文件.     -v 查看压缩文件目录,但不解压.    -t 测试文

java 解压 zip 包并删除

需求是这样的,  在服务器上有 运营上传的zip 包,内容是用户的照片,我需要做的是 获取这些照片上传,并保存到 数据库. 这里面的 上传照片,保存数据库都不难,主要问题是解压zip包,和删除zip 包,以及 解压后的文件. 之前在网上找的解压的文件的代码,都存在同一个问题,就是解压之后,无法删除 zip 包.查百度说是 资源占用,可是我已经把所有的流都关闭了哇. 我把解压和删除分成两部分用 jUnit  测试:   第一次测试解压,并不删除包:第二次只删除包.我发现,解压方法和删除方法在同一个

基于Android下载并解压Zip文件,更新UI简单帮助类

类似于:http://blog.csdn.net/jarlen/article/details/44794031 下载文件: /** * 下载文件 * * @param down_url * @param output * @param tmpDir */ private void download(String down_url, File output, File tmpDir) { InputStream inputStream = null; OutputStream outputStr