您的位置:首页 > 其它

完全实现 各种变态路径的解压缩,支持在 Web 上运行(在数字签名中遇到的问题,想到了用这种写法)

2008-07-24 10:32 337 查看
package com.aspire.reportPlatform.webagent;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLConnection;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
 * 
 * @author Jhonson Lee
 * 实现各种路径的解压缩, 包括  url 和 绝对路径
 */
public class UnZipUtil {
	
	/**
	 * 
	 * @param sourceFile  源文件
	 * @param outputFolder 输出的目标目录
	 */
	public static void unZipResources(String sourceFile,String outputFolder){
		
    	String archivePath = sourceFile;
    	ZipInputStream zis = null;
		ZipEntry entry = null;
		URLConnection con = null;
		String rdpOutputFolder = outputFolder;
		
		File configFile=new File(rdpOutputFolder);
		if(!configFile.exists()) {
			configFile.mkdir();
		}
			
		try {
			con = (new URL(archivePath)).openConnection();
			con.setUseCaches(false);
			con.connect();
			zis = new ZipInputStream(con.getInputStream());
			while ((entry = zis.getNextEntry()) != null){
				if (entry.isDirectory()) {
                    String name = entry.getName();
                    name = name.substring(0, name.length() - 1);
                    File f = new File(rdpOutputFolder + File.separator + name);
                    f.mkdir();
                } else {
                	unZipResource(zis, entry.getName(),rdpOutputFolder);
                }
				
			}
		} catch (IOException ioe) {
			StatusPanel.getStatusPanelInstance().setStatus((byte) 8);
			ioe.printStackTrace();
			//			LogFile.getInstance().print(0,
			// "WebAgentApplet.installLibraries()",
			//					"install have IOException ");
		}catch(Exception e){
		    e.printStackTrace();	
		}finally {
			con = null;
			try {
				zis.close();
			} catch (IOException e) {
				// TODO 自动生成 catch 块
				e.printStackTrace();
			}
		}
    }
    /**
     * 
     * @param archive
     * @param configResourceName
     * @param path
     */
    private static void unZipResource(ZipInputStream archive, String configResourceName,String path){
    	BufferedOutputStream out = null;
		byte buffer[] = new byte[1024];
		int count = 0;
		String configFullPathName = path + File.separator + configResourceName;
		
		try {
			out = new BufferedOutputStream(
					new FileOutputStream(configFullPathName));
			while ((count = archive.read(buffer)) > 0)
				out.write(buffer, 0, count);
			out.close();
		} catch (IOException e) {
			
			e.printStackTrace();
		}catch(Exception e){
		    e.printStackTrace();	
		}finally{
			try {
				out.close();
			} catch (IOException e1) {
				// TODO 自动生成 catch 块
				e1.printStackTrace();
			}
		}

		
    }
}
[code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐