`
石頭剪刀b
  • 浏览: 441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

zip文件解压或压缩

 
阅读更多
[java] view plaincopyprint?在CODE上查看代码片派生到我的代码片

    <span style="font-size:18px;">/**
     * lsz
     */ 
    public final class ZipUtil { 
     
        /**
         * 解压zip文件
         * @param unZipfile
         * @param destFile
         */ 
        public static void unZip(String unZipfile, String destFile) { 
            FileOutputStream fileOut; 
            File file; 
            InputStream inputStream; 
            byte[]   buf = new byte[1024*4]; 
            try { 
                //生成一个zip的文件 
                ZipFile   zipFile = new ZipFile(unZipfile, "GBK"); 
                //遍历zipFile中所有的实体,并把他们解压出来 
                for (@SuppressWarnings("unchecked") 
                Enumeration<ZipEntry> entries = zipFile.getEntries(); entries 
                        .hasMoreElements();) { 
                    ZipEntry entry =  entries.nextElement(); 
                    //生成他们解压后的一个文件   
                    file = new File(destFile+File.separator+entry.getName()); 
       
                    if (entry.isDirectory()) { 
                        file.mkdirs(); 
                    } else { 
                        // 如果指定文件的目录不存在,则创建之. 
                        File parent = file.getParentFile(); 
                        if (!parent.exists()) { 
                            parent.mkdirs(); 
                        }   
                        //获取出该压缩实体的输入流  
                        inputStream = zipFile.getInputStream(entry); 
       
                        fileOut = new FileOutputStream(file); 
                        int length = 0; 
                        //将实体写到本地文件中去 
                        while ((length = inputStream.read(buf)) > 0) { 
                            fileOut.write(buf, 0, length); 
                        } 
                        fileOut.close(); 
                        inputStream.close(); 
                    } 
                } 
                zipFile.close(); 
                //解压完后将原压缩文件删除 
                File zipfile = new File(unZipfile); 
                if(zipfile.exists()){ 
                    zipfile.delete(); 
                }    
            } catch (IOException ioe) { 
                ioe.printStackTrace(); 
            } 
        } 
         
     
          
        /**
         * 一个文件夹压缩
         * 压缩文件夹
         * @param filepath
         * @param savepath
         * @throws Exception
         */ 
          public static void toZip(String filepath,String savepath) throws Exception{ 
              File file = new File(filepath); 
              if(file.exists()){ 
                  //判断导出路径是否为空,如果为空,则将压缩包生成到当前路径下 
                  if(StringUtils.isBlank(savepath)){ 
                      savepath = filepath+".zip"; 
                  }else{ 
                      savepath = savepath+".zip"; 
                  } 
                  ZipOutputStream outPut = new ZipOutputStream(new FileOutputStream(new File(savepath)));   
                  outPut.setEncoding("GBK");//设置编码   
                  createZip(outPut,file.listFiles(),null);  
                  outPut.flush();   
                  outPut.close(); 
              }else{ 
                  //not found 
                  throw new RuntimeException("Err :not found file exception:"+filepath);   
              }      
          } 
           
          private static void createZip(org.apache.tools.zip.ZipOutputStream outPut,File[] listFiles,String fuPath) throws Exception {   
                for(File f : listFiles){   
                    String name = fuPath==null?f.getName():fuPath+"/"+f.getName();;   
                    if(f.isDirectory()){   
                        outPut.putNextEntry(new ZipEntry(name+"/"));   
                        createZip(outPut,f.listFiles(),name);   
                    }else{   
                        outPut.putNextEntry(new ZipEntry(name));   
                        InputStream is = new FileInputStream(f);   
                        byte[] bys = new byte[1024];   
                        int len = 0;   
                        while((len = is.read(bys))!=-1)   
                            outPut.write(bys, 0, len);   
                        is.close();   
                        outPut.flush();   
                    }   
                }   
            }  
           
          /*
           * 复制文件 只能使复制文件,不能复制文件夹
           */ 
          public static void fileChannelCopy(File fromfile, File tofile) { 
                FileInputStream fi = null; 
                FileOutputStream fo = null; 
                FileChannel in = null; 
                FileChannel out = null; 
                try { 
                    fi = new FileInputStream(fromfile); 
                    fo = new FileOutputStream(tofile); 
                    in = fi.getChannel();//得到对应的文件通道 
                    out = fo.getChannel();//得到对应的文件通道 
                    in.transferTo(0, in.size(), out);//连接两个通道,并且从in通道读取,然后写入out通道 
                } catch (IOException e) { 
                    e.printStackTrace(); 
                } finally { 
                    try { 
                        fi.close(); 
                        in.close(); 
                        fo.close(); 
                        out.close(); 
                    } catch (IOException e) { 
                        e.printStackTrace(); 
                    } 
                } 
            } 
    }</span> 
分享到:
评论

相关推荐

    C++ Zlib库实现zip文件压缩解压(支持递归压缩)

    实现zip文件的压缩,我们通常会遍历要压缩的目录,递归地将每个文件添加到`zip`档案中。这需要使用`minizip`的`zipOpen`、`zipOpenNewFileInZip`、`zipWriteInFileInZip`和`zipCloseFileInZip`等函数。同时,对于每...

    zip文件压缩解压源码 (c++)

    总结来说,`zip文件压缩解压源码(C++)`涉及的关键技术包括:理解zip文件格式,使用C++进行文件操作,选择和应用压缩算法,以及错误处理。通过分析和理解`XUnzip.cpp`和`XZip.cpp`,我们可以学习如何在C++环境中...

    C++ zip解压缩压缩

    为了使用这个C++库,开发者首先需要在他们的源文件中包含zip.h和unzip.h头文件,然后调用相应的函数进行压缩或解压缩操作。例如,可能有一个`compress_file()`函数用于压缩单个文件,以及一个`unzip_archive()`函数...

    java 操作Zip文件(压缩、解压、加密).zip

    - **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...

    C语言实现Zip压缩解压.rar

    总之,C语言实现ZIP压缩解压涉及文件操作、数据压缩算法和ZIP文件格式的理解。通过学习和应用相关库,开发者可以创建自己的ZIP工具,满足特定的需求。这个过程既锻炼了C语言编程技能,也加深了对文件压缩技术的理解...

    vbs压缩和解压zip,vbs压缩zip,vbs解压zip

    在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种常用脚本语言,支持多种文件操作功能,包括...

    ucos移植zlib和zip文件解压缩

    ZIP是一种流行的文件归档格式,可以包含多个压缩或未压缩的文件。为了在UCOS上实现ZIP解压,我们可以利用开源库,例如ZIP解压缩工具“unzip”。文件unzip101h可能是包含UNZIP库源代码的一个头文件。 1. 移植UNZIP库...

    VC++ MFC 如何用 CZip CUnzip类压缩解压缩文件

    在VC++ MFC环境下,开发过程中我们可能会遇到需要对文件进行压缩或解压缩的需求。CZip和CUnzip是两个非常实用的类,它们分别用于文件的压缩和解压缩操作,是ZLib库的一个MFC封装,使得在MFC项目中使用起来更加方便。...

    VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件

    VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件,网上很多源码不好用,所以就自己做了一个。原始代码是VC++的用VS2019编译了一个,DLL封装了下。调用很简单 '调用方法如下: 'CreateZipFileA "C:\123", "C:\123.zip...

    C++ zip、zip压缩文件处理等压缩文件处理类源码

    5从压缩文件解压文件 6释放(关闭)压缩文件 源码包含了封装的功能模块类以及测试类, 全部源码都可以用VS2020编译通过,请放心使用! 友情提示,为了兼顾一些旧代码,预编译头文件用的是StdAfx.h,如果需要更换为...

    java 中 zip压缩文件解压工具类

    本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    要压缩文件或目录到ZIP文件,你需要创建一个`ZipOutputStream`实例,并将其包装在`FileOutputStream`上,指向你想要创建的ZIP文件。然后,你可以使用`ZipEntry`类来表示每一个要添加到ZIP文件的条目,通过调用`...

    ZLib + minizip实现ZIP文件压缩解压缩

    2. **ZIP文件格式**:ZIP是一种流行的档案格式,可以包含一个或多个经过压缩的文件和目录。ZIP文件头包含了关于压缩方法、时间戳、文件权限等信息,minizip就是用来解析和操作这些信息的。 3. **minizip API**:...

    在iOS使用ZipArchive压缩和解压缩文件

    如果你需要压缩或解压缩多个文件,可以将文件路径的数组传递给`createZipFileAtPath:withFilesAtPaths:`或`unZipFileAtPath:toDestination:`方法。 ### 6. 错误处理 在实际应用中,你需要处理可能出现的错误,例如...

    C++实现ZIP文件解压

    总的来说,C++实现ZIP文件解压涉及对ZIP文件格式的深入了解,包括其结构、压缩方法和元数据。这个过程需要对文件I/O、内存管理和错误处理有扎实的理解。尽管本文提供了基本的思路,但在实际应用中,可能需要进一步的...

    PHP在线压缩解压ZIP文件

    unzip.php可能包含了处理ZIP文件解压的逻辑,包括读取ZIP文件、检查密码、解压缩文件到服务器指定位置等步骤。而zip.php则可能负责文件的压缩操作,它需要遍历要打包的文件和目录,创建新的ZIP文件,并将文件添加到...

    VB.NET使用ZipPackage实现ZIP文件压缩解压缩示例

    在.NET框架中,VB.NET提供了一种方便的方式来处理ZIP文件的压缩和解压缩,这主要得益于System.IO.Packaging命名空间中的ZipPackage类。本文将深入探讨如何利用VB.NET和ZipPackage来完成这一任务,同时也会提及一些...

    C++开源zip压缩库文件原码,可直接引用

    ZIP文件通常包含一个或多个压缩或未压缩的数据块,每个块对应原始文件的一个部分。ZIP格式支持多种压缩算法,如DEFLATE,这是最常见的一种。 开源的C++ ZIP压缩库,通常会提供一套API(应用程序编程接口),开发者...

    Delphi实现Zip压缩/解压缩

    总之,Delphi的`System.Zip`单元为开发者提供了强大的ZIP文件操作能力,无论是创建新的ZIP文件、添加文件还是解压缩文件都变得轻而易举。同时,通过COM接口,我们可以让不同版本的Delphi之间共享这些功能,大大提升...

    C++压缩和解压ZIP文件,有演示代码

    本文将详细介绍如何使用C++对ZIP文件进行压缩和解压缩操作,同时提供一个基于ZipLib库的封装示例。ZipLib是一个开源库,专为C++设计,用于处理ZIP文件格式。 首先,我们要理解ZIP文件格式。ZIP是一种通用的文件压缩...

Global site tag (gtag.js) - Google Analytics