zip文件解压或压缩

<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>

时间: 2024-10-29 10:48:47

zip文件解压或压缩的相关文章

Linux系统下ZIP文件解压和压缩命令

zip all.zip *.jpg   #将所有.jpg的文件压缩成一个zip包 unzip all.zip    #将all.zip中的所有文件解压到当前目录中 unzip all.zip -d all #将all.zip 中的所有文件解压到当前目录中的all文件夹中 zip -r hy.zip hy  #将当前目录下的hy文件夹压缩为hy.zip zip -r hy.zip hy 123.txt  #将当前目录下的hy文件夹和123.txt压缩为hy.zip 作者:open210 来源:CS

c++builder ZIP文件解压与压缩(ZLIB DLL调用)(转载 )

转载:http://blog.csdn.net/goodai007/article/details/7414512 头文件:ZipAndFile.h 1 //--------------------------------------------------------------------------- 2 3 #ifndef ZipAndFileH 4 #define ZipAndFileH 5 #include <Classes.hpp> 6 //-------------------

ZIP文件解压

public class DZip { /// <summary> /// 压缩为ZIP文件 /// </summary> public void Zip(string directory,string fileName) { //using (var archive = ZipArchive.Create()) //{ // archive.AddAllFromDirectory(@"C:\\source"); // archive.SaveTo(@"

linux下压缩成zip文件解压zip文件

linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏的压缩文件     -h     显示帮助界面 -m     将文件压缩之后,删除源文件 -n 特定字符串    不压缩具有特定字尾字符串的文件 -o     将压缩文件内的所有文件的最新变动时间设为压缩时候的时间 -q     安静模式,在压缩的时候不显示指令的执行过程 -r     将指定的目录

Linux 下 zip 文件解压乱码解决方案,ubuntu16.10亲测可用

文章来源: https://www.zhihu.com/question/20523036 今天邮件中收到了一个压缩文件,解压后却是乱码,从网上也找了几个方法,目前这个方法还是比较可靠的,如下所示: 7z方案 需要安装p7zip和convmv,在Fedora下的命令是 su -c 'yum install p7zip convmv' 在ubuntu下的安装命令是 sudo apt-get install p7zip convmv 安装完之后,就可以用7za和convmv两个命令完成解压缩任务.

asp.net实现文件解压和压缩

C#解压RAR压缩文件(--转载--测试通过) using System; using System.Collections.Generic; using System.Text; using System.IO; using Microsoft.Win32; using System.Diagnostics; namespace Uni.UniCustoms { public class clsWinrar { /// <summary> /// 是否安装了Winrar /// </s

linux .tar.xz 文件解压和压缩

场景:centos7.0下文件格式为xxx.tar.xz,解压和压缩命令: 压缩 tar -Jcf linux-3.10.0-123.13.1.el7.tar.xz(文件名) linux-3.10.0-123.13.1.el7/ 解压: tar -Jxf linux-3.10.0-123.13.1.el7.tar.xz

linux下zip文件解压后乱码解决方案

解决办法一,利用pyton来处理 1.vi uzip文件2.复制一下内容(Python) #!/usr/bin/env python # -*- coding: utf-8 -*- # uzip.py import os import sys import zipfile print "Processing File " + sys.argv[1] file=zipfile.ZipFile(sys.argv[1],"r"); for name in file.nam

initramfs.img,ramdisk 文件解压与压缩

1, 重命名gz 压缩文件 mv initramfs.img  initramfs.img.gz 2, 解压文件 186  gunzip initramfs.img.gz 3, 查看文件类型  188  file initramfs.img 4, 创建目录  189  mkdir temp  190  cd temp 5, 解压目录  193  cpio -i -F ../initramfs.img 6, 压缩文件 find . |cpio -ov -H newc |gzip > ../init