欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

java 压缩和解压缩文件,java和解压缩文件,import java.

来源: javaer 分享于  点击 45217 次 点评:91

java 压缩和解压缩文件,java和解压缩文件,import java.


import java.io.File;import java.io.FileInputStream;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;import org.apache.tools.zip.ZipOutputStream;import org.slf4j.Logger;import org.slf4j.LoggerFactory;/** * 压缩,解压,删除,拷贝操作。 *  * 注意:此类中用到的压缩类ZipEntry等都来自于org.apache.tools包而非java.util。此包在ant.jar中有。 *  * * @author Tony */public class FileUtil {    protected static Logger log = LoggerFactory.getLogger(FileUtil.class);    /**     *      * 压缩文件     *      * @param inputFileName     *            要压缩的文件或文件夹路径,例如:c:\\a.txt,c:\\a\     *      * @param outputFileName     *            输出zip文件的路径,例如:c:\\a.zip     *      */    public static void zip(String inputFileName, String outputFileName)            throws Exception {        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(                outputFileName));        zip(out, new File(inputFileName), "");        log.debug("压缩完成!");        out.closeEntry();        out.close();    }    /**     *      * 压缩文件     *      * @param out     *            org.apache.tools.zip.ZipOutputStream     *      * @param file     *            待压缩的文件     *      * @param base     *            压缩的根目录     *      */    private static void zip(ZipOutputStream out, File file, String base)            throws Exception {        if (file.isDirectory()) {            File[] fl = file.listFiles();            base = base.length() == 0 ? "" : base + File.separator;            for (int i = 0; i < fl.length; i++) {                zip(out, fl[i], base + fl[i].getName());            }        } else {            out.putNextEntry(new ZipEntry(base));            log.debug("添加压缩文件:" + base);            FileInputStream in = new FileInputStream(file);            int b;            while ((b = in.read()) != -1) {                out.write(b);            }            in.close();        }    }    /**     *      * 解压zip文件     *      * @param zipFileName     *            待解压的zip文件路径,例如:c:\\a.zip     *      * @param outputDirectory     *            解压目标文件夹,例如:c:\\a\     *      */    public static void unZip(String zipFileName, String outputDirectory)            throws Exception {        ZipFile zipFile = new ZipFile(zipFileName);        try {            Enumeration<?> e = zipFile.getEntries();            ZipEntry zipEntry = null;            createDirectory(outputDirectory, "");            while (e.hasMoreElements()) {                zipEntry = (ZipEntry) e.nextElement();                log.debug("解压:" + zipEntry.getName());                if (zipEntry.isDirectory()) {                    String name = zipEntry.getName();                    name = name.substring(0, name.length() - 1);                    File f = new File(outputDirectory + File.separator + name);                    f.mkdir();                    log.debug("创建目录:" + outputDirectory + File.separator + name);                } else {                    String fileName = zipEntry.getName();                    fileName = fileName.replace('\\', '/');                    if (fileName.indexOf("/") != -1) {                        createDirectory(outputDirectory, fileName.substring(0,                                fileName.lastIndexOf("/")));                        fileName = fileName.substring(                                fileName.lastIndexOf("/") + 1,                                fileName.length());                    }                    File f = new File(outputDirectory + File.separator                            + zipEntry.getName());                    f.createNewFile();                    InputStream in = zipFile.getInputStream(zipEntry);                    FileOutputStream out = new FileOutputStream(f);                    byte[] by = new byte[1024];                    int c;                    while ((c = in.read(by)) != -1) {                        out.write(by, 0, c);                    }                    in.close();                    out.close();                }            }        } catch (Exception ex) {            System.out.println(ex.getMessage());        } finally {            zipFile.close();            log.debug("解压完成!");        }    }}
相关栏目:

用户点评