Java zip and unzip demo

目录结构如下:

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class zipDemo {

    public static void main(String[] args)  {
     try {
        //zipFolder("/home/hadoop/test";);
        unzip("/home/hadoop/mytest/test.zip","/home/hadoop/mytest/");
    } catch (IOException e) {
        e.printStackTrace();
    }
    }

    static void zipFolder(String _path) throws IOException
    {
        Path path = Paths.get(_path);
        String target = "/home/hadoop/mytest/test.zip";
        //String target = path.getParent() +"/" + path.getFileName() +".zip";
        /*
         System.out.println(path.getFileName());
         System.out.println(path.getRoot());
         System.out.println(path.getParent());System.out.println(target);
        */
         ZipOutputStream zo = new ZipOutputStream(new FileOutputStream(target));
         zipFile(zo,path,"");
         zo.close();
    }
    static void zipFile(ZipOutputStream zo,Path _path,String parentpath) throws IOException
    {
        File _file = _path.toFile();
        if(_file.isFile())
        {
            byte[] buff = new byte[1024];
            FileInputStream fi = new FileInputStream(_file);
            int len;
            zo.putNextEntry(new ZipEntry(parentpath +"/" + _file.getName()));
            while((len=fi.read(buff))>0)
                zo.write(buff, 0, len);
            zo.closeEntry();
            fi.close();
        }
        if(_file.isDirectory())
        {
            if(_file.listFiles().length==0)
            {
                zo.putNextEntry(new ZipEntry(parentpath.equals("")?_file.getName():parentpath + "/" + _file.getName() + "/"));
            }
            for(File __file : _file.listFiles())
                zipFile(zo,__file.toPath(),parentpath.equals("")?_file.getName():parentpath+ "/" + _file.getName());
        }
    }

    static void unzip(String path,String target) throws IOException
    {
        File targetfolder = new File(target);
        ZipInputStream zi = new ZipInputStream(new FileInputStream(path));
        ZipEntry ze = null;
        FileOutputStream fo = null;
        byte[] buff = new byte[1024];
        int len;
        while((ze =  zi.getNextEntry())!=null)
        {
            File _file = new File(targetfolder,ze.getName());
            if(!_file.getParentFile().exists()) _file.getParentFile().mkdirs();
            if(ze.isDirectory())
            {
                _file.mkdir();
            }
            else //file
            {
                fo = new FileOutputStream(_file);
                while((len=zi.read(buff))>0) fo.write(buff, 0, len);
                fo.close();
            }
            zi.closeEntry();
        }
        zi.close();
    }
}
时间: 2024-10-19 16:03:45

Java zip and unzip demo的相关文章

java zip压缩和解压(支持中文)

package com.xeon.mis.utils; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.util.Enumeration; impor

Linux下的压缩zip,解压缩unzip命令详解及实例

Linux下的压缩zip,解压缩unzip命令 本人亲自测试总结: linux 安装unzip zip 安装命令:yum install -y unzip zip # unzip yasuo.zip 方法一: 安装命令:yum install -y unzip zip 1. 我想把一个文件abc.txt和一个目录dir1压缩成为yasuo.zip:# zip -r yasuo.zip abc.txt dir12.我下载了一个yasuo.zip文件,想解压缩: # unzip yasuo.zip

JAVA zip解压 MALFORMED 错误

最近在在使用zip 解压时,使用JDK1.7及以上版本在解压时,某些文件会报异常 Exception in thread "main" java.lang.IllegalArgumentException: MALFORMED at java.util.zip.ZipCoder.toString(ZipCoder.java:58) at java.util.zip.ZipFile.getZipEntry(ZipFile.java:567) at java.util.zip.ZipFil

Linux命令-压缩解压命令:zip、unzip

rm -rf * 删除当前目录下面的所有文件,也包括目录和子目录ls cp /etc/services /tmp 复制etc目录下的services文件到tmp目录ls -lhzip services.zip services 压缩services文件,生成services.zip文件ls -lh mkdir -p shijiazhuang/changanqu shijiazhuang/yuhuaqu shijiazhuang/kaifaqu 递归方式创建shijiazhuang的子目录 ls

Java框架JSON-RPC项目demo代码实战

原创整理不易,转载请注明出处:Java框架JSON-RPC项目demo代码实战 代码下载地址:http://www.zuidaima.com/share/1781535155162112.htm 一.JSON-RPC-Java简介 JSON-RPC-Java是一个用Java来实现动态JSON-RPC的框架. 利用它内置的一个轻级量JSON-RPC JavaScripIt客户端,可以让你透明地在JavaScript中调用Java代码.JSON-RPC-Java可运行在Servlet容器中如Tomc

java.lang.ClassNotFoundException: com.demo.search.extractAbstract.service.ExtractAbstractServiceHandler

在利用 Spring 对 thrift 进行集成时,出现错误: avax.servlet.ServletException: Servlet.init() for servlet search-nlp-service threw exception org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) org.apache.catalina.valves.ErrorReport

zip和unzip

zip压缩包是Windows下和Linux下都比较常用的. zip可以压缩目录也可以压缩文件,压缩目录时,需要指定目录下的文件. 初次使用,没有安装zip的,使用yum工具安装.#yum install -y zip 例: [[email protected] ~]# zip 1.txt.zip 1.txt [[email protected] ~]# ls 123    1.txt.zip 789              dira  install.log 1.txt  456      

Java Zip/Unzip Files 记录

最近项目中使用Java实现zip/unzip XML文件的功能,Java自带的API可以方便实现文件的压缩和解压缩,记录一下相关代码. 以源文件名zip压缩源文件到目标文件 public void zip(File src, File dest){ InputStream in = null; ZipOutputStream zos= null; try { zos = new ZipOutputStream(new FileOutputStream(dest)); ZipEntry ze= n

[Java] 第一个Spring Demo

1  Spring关键字: DI:Dependency Injection,依赖注入.依赖指的是调用关系.A调用B则A依赖于B.注入指的是A不再new B对象,而是由Spring容器来注入B对象. IoC:控制反转,对象不再由调用者来new,而是把new对象的任务交给Spring容器,Spring从XML中读取对象的属性值. AOP:面向切面变成(区别于面向对象编程OOP).so,切面是什么?一些公共行为? DAI:Spring整合了针对多种数据库的访问方式(含JDBC.OXM等) 框架融合:可