解压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> 

 

转载于:https://www.cnblogs.com/XueRong-7/p/4503980.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值