⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ziptoolkit.java

📁 该系统是一个基于p2p的即时聊天系统
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* * @(#) ZipToolkit.java * Copyright 2004 HWStudio. All rights reserved. */package hws.item.smart.utility.share;//导入核心Java类库import java.io.File;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.net.URL;import java.net.MalformedURLException;import java.util.List;import java.util.ArrayList;import java.util.StringTokenizer;import java.util.zip.ZipFile;import java.util.zip.ZipEntry;import java.util.zip.ZipException;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;//导入自定义Java类库import hws.item.smart.misc.XMLConfig;/** * Zip文件工具箱 * * @version 0.1 2005-08-27 * @author Hwerz */public class ZipToolkit extends Object {    /*------------------------------------------------------------------------*     *                                属性定义                                *     *------------------------------------------------------------------------*/    /**     * 临时路径     */    private static final String WORKING_DIR = "c:\\working";    /**     * 分隔符     */    private static final String DELIMITER1 = "/";    /**     * 分隔符     */    private static final String DELIMITER2 = "\\";    /**     * 缓冲区大小     */    private static final int BUFFER_SIZE = 10 * 1024;    /**     * 该类自身的一个静态引用     */    private static ZipToolkit toolkit;    /**     * 压缩文件的文件名     */    private String fileName;    /**     * 暂存被压缩文件的父目录     */    private String parentDir;    /**     * 存放压缩文件中实体     */    private List entries;    /*------------------------------------------------------------------------*     *                                构造函数                                *     *------------------------------------------------------------------------*/    /**     * 构造函数为私有,这样在整个运行过程中该类就只能有一个实例     */    private ZipToolkit() {        super();        fileName = null;        parentDir = null;        entries = new ArrayList();    }    /*------------------------------------------------------------------------*     *                                公共方法                                *     *------------------------------------------------------------------------*/    /**     * 对该类提供的一个全局访问点,用来实例化该对象     *     * @return 该类唯一的一个实例     */    public static ZipToolkit getInstance() {        if (toolkit == null) {            toolkit = new ZipToolkit();        }        return toolkit;    }    /**     * 判断默认的Zip文件是否为空,如果为空则返回true,否则返回false     *     * @return 如果默认的Zip文件为空则返回true,否则返回false     */    public static boolean isDefaultZipFileNull() {        boolean isNull;        try {            ZipFile zipFile = new ZipFile(XMLConfig.getUploadFile());            isNull = !zipFile.entries().hasMoreElements();        } catch (IOException e) {            isNull = true;        }        return isNull;    }    /**     * 返回压缩文件中的所有实体     *     * @return 压缩文件中的所有实体     */    public List getEntries() {        return entries;    }    /**     * 比较两个实体的大小。规则是目录比文件小,如果类型一致则按字母表顺序比较     *     * @param entry1 第一个实体     * @param entry2 第二个实体     * @return 如果第一个实体大则返回1;如果两者相等则返回0;否则返回-1     */    public int compare(ZipEntry entry1, ZipEntry entry2) {        int result;        if (entry1.isDirectory() && entry2.isDirectory() == false) {            result = -1;        } else if (entry1.isDirectory() == false && entry2.isDirectory()) {            result = 1;        } else {            result = entry1.getName().compareTo(entry2.getName());        }        return result;    }    /**     * 返回指定实体的短名称     *     * @param entry 指定的实体     * @return 指定实体的短名称     */    public String getShortName(ZipEntry entry) {        String name = entry.getName();        if (entry.isDirectory() == true) {            name = name.substring(0, name.length() - 1);        }        int index = name.lastIndexOf(DELIMITER1);        name = name.substring(index + 1, name.length());        return name;    }    /**     * 打开文件     *     * @param file 待打开的Zip文件     */    public void openFile(File file) {        if (file.exists() == false) {            newFile(file.getPath());        } else {            entries.clear();            fileName = file.getPath();        }        try {            InputStream fis = new FileInputStream(file);            InputStream bis = new BufferedInputStream(fis);            ZipInputStream zis = new ZipInputStream(bis);            ZipEntry entry = null;            while ((entry = zis.getNextEntry()) != null) {                entries.add(entry);            }            zis.close();            bis.close();            fis.close();        } catch (IOException e) {            e.printStackTrace();        }    }    /**     * 新建目录     *     * @param entry 待新建目录的位置     * @param name 待新建目录的名称     */    public void newDirectory(ZipEntry entry, String name) {        File file = new File(WORKING_DIR);        if (entries.size() > 0) {            extractFile(file, entries.toArray(), null);        } else {            file.mkdir();        }        StringBuffer buffer = new StringBuffer();        buffer.append(file.getAbsolutePath());        if (entry == null) {            buffer.append(DELIMITER2);            buffer.append(name);            buffer.append(DELIMITER2);        } else {            StringTokenizer st =                new StringTokenizer(entry.getName(), DELIMITER1);            while (st.hasMoreTokens()) {                buffer.append(DELIMITER2);                buffer.append(st.nextToken());            }            buffer.append(DELIMITER2);            buffer.append(name);            buffer.append(DELIMITER2);        }        (new File(buffer.toString())).mkdir();        rewriteFile(file.listFiles());        deleteFile(file);    }    /**     * 添加文件     *     * @param entry 待添加文件的位置     * @param file 待添加的文件     */    public void addFile(ZipEntry entry, File file) {        File file2 = new File(WORKING_DIR);        if (entries.size() > 0) {            extractFile(file2, entries.toArray(), null);        } else {            file2.mkdir();        }        StringBuffer buffer = new StringBuffer();        buffer.append(file2.getAbsolutePath());        if (entry == null) {            buffer.append(DELIMITER2);            buffer.append(file.getName());        } else {            StringTokenizer st =                new StringTokenizer(entry.getName(), DELIMITER1);            while (st.hasMoreTokens()) {                buffer.append(DELIMITER2);                buffer.append(st.nextToken());            }            buffer.append(DELIMITER2);            buffer.append(file.getName());        }        copyFile(file, new File(buffer.toString()));        rewriteFile(file2.listFiles());        deleteFile(file2);    }    /**     * 删除文件或者目录     *     * @param entry 待删除的文件或者目录所对应的实体     */    public void deleteFile(ZipEntry entry) {        File file = new File(WORKING_DIR);        extractFile(file, entries.toArray(), null);        StringBuffer buffer = new StringBuffer();        buffer.append(file.getAbsolutePath());        StringTokenizer st = new StringTokenizer(entry.getName(), DELIMITER1);        while (st.hasMoreTokens()) {            buffer.append(DELIMITER2);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -