18.zip

发表日期:2022-08-05 16:22:18 | 来源: | | 浏览(610) 分类:JAVA基础

ZipDemo01

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;


public class ZipDemo01 {

   /**
    * @param args
    * @throws IOException 
    */
   public static void main(String[] args) throws IOException {
      // TODO Auto-generated method stub

      File file = new File("d:"+File.separator+"test.txt");
      
      File zipFile = new File("d:"+File.separator+"test.zip");
      
      FileInputStream fis = new FileInputStream(file);
      
      FileOutputStream fos = new FileOutputStream(zipFile);
      
      ZipOutputStream zos = new ZipOutputStream(fos);
      
      zos.setComment("这里是注释");
      
      ZipEntry zEntry = new ZipEntry(file.getName());
      
      zos.putNextEntry(zEntry);
      
      int temp = 0;
      
      while ((temp=fis.read())!=-1) {
         
         zos.write(temp);
         
      }
      
      
      zos.finish() ;
      zos.close();

   }

   private static Object Charset(String string) {
      // TODO Auto-generated method stub
      return null;
   }

}


ZipUtils

/**
 * Created by Administrator on 2016/4/5.
 */
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

public class ZipUtils {

   public static void zip(ArrayList<String> src, String dest) throws IOException {

      ZipOutputStream out = null;
      try {
         File outFile = new File(dest);// 源文件或者目录
         out = new ZipOutputStream(new FileOutputStream(outFile));

         for (int i = 0; i < src.size(); i++) {
            File fileOrDirectory = new File(src.get(i));// 压缩文件路径
            zipFileOrDirectory(out, fileOrDirectory, "");
         }
         
      } catch (IOException ex) {
         ex.printStackTrace();
      } finally {
         // 关闭输出流
         if (out != null) {
            try {
               out.close();
            } catch (IOException ex) {
               ex.printStackTrace();
            }
         }
      }
   }

   public static void zip(String src, String dest) throws IOException {
      // 提供了一个数据项压缩成一个ZIP归档输出流
      ZipOutputStream out = null;
      try {

         File outFile = new File(dest);// 源文件或者目录
         File fileOrDirectory = new File(src);// 压缩文件路径
         out = new ZipOutputStream(new FileOutputStream(outFile));
         // 如果此文件是一个文件,否则为false。
         if (fileOrDirectory.isFile()) {
            zipFileOrDirectory(out, fileOrDirectory, "");
         } else {// 返回一个文件或空阵列。
            File[] entries = fileOrDirectory.listFiles();
            for (int i = 0; i < entries.length; i++) {
               // 递归压缩,更新curPaths
               zipFileOrDirectory(out, entries[i], "");
            }
         }

      } catch (IOException ex) {
         ex.printStackTrace();
      } finally {
         // 关闭输出流
         if (out != null) {
            try {
               out.close();
            } catch (IOException ex) {
               ex.printStackTrace();
            }
         }
      }
   }

   private static void zipFileOrDirectory(ZipOutputStream out,
         File fileOrDirectory, String curPath) throws IOException {
      // 从文件中读取字节的输入流
      FileInputStream in = null;
      try {
         // 如果此文件是一个目录,否则返回false。
         if (!fileOrDirectory.isDirectory()) {
            // 压缩文件
            byte[] buffer = new byte[4096];
            int bytes_read;
            in = new FileInputStream(fileOrDirectory);
            // 实例代表一个条目内的ZIP归档
            ZipEntry entry = new ZipEntry(curPath
                  + fileOrDirectory.getName());
            // 条目的信息写入底层流
            out.putNextEntry(entry);
            while ((bytes_read = in.read(buffer)) != -1) {
               out.write(buffer, 0, bytes_read);
            }
            out.closeEntry();
         } else {
            // 压缩目录
            File[] entries = fileOrDirectory.listFiles();
            for (int i = 0; i < entries.length; i++) {
               // 递归压缩,更新curPaths
               zipFileOrDirectory(out, entries[i], curPath
                     + fileOrDirectory.getName() + "/");
            }
         }
      } catch (IOException ex) {
         ex.printStackTrace();
         // throw ex;
      } finally {
         if (in != null) {
            try {
               in.close();
            } catch (IOException ex) {
               ex.printStackTrace();
            }
         }
      }
   }

   @SuppressWarnings("unchecked")
   public static void unzip(String zipFileName, String outputDirectory)
         throws IOException {
      ZipFile zipFile = null;
      try {
         zipFile = new ZipFile(zipFileName);
         Enumeration e = zipFile.entries();
         ZipEntry zipEntry = null;
         File dest = new File(outputDirectory);
         dest.mkdirs();
         while (e.hasMoreElements()) {
            zipEntry = (ZipEntry) e.nextElement();
            String entryName = zipEntry.getName();
            InputStream in = null;
            FileOutputStream out = null;
            try {
               if (zipEntry.isDirectory()) {
                  String name = zipEntry.getName();
                  name = name.substring(0, name.length() - 1);
                  File f = new File(outputDirectory + File.separator
                        + name);
                  f.mkdirs();
               } else {
                  int index = entryName.lastIndexOf("\\");
                  if (index != -1) {
                     File df = new File(outputDirectory + File.separator
                           + entryName.substring(0, index));
                     df.mkdirs();
                  }
                  index = entryName.lastIndexOf("/");
                  if (index != -1) {
                     File df = new File(outputDirectory + File.separator
                           + entryName.substring(0, index));
                     df.mkdirs();
                  }
                  File f = new File(outputDirectory + File.separator
                        + zipEntry.getName());
                  // f.createNewFile();
                  in = zipFile.getInputStream(zipEntry);
                  out = new FileOutputStream(f);
                  int c;
                  byte[] by = new byte[1024];
                  while ((c = in.read(by)) != -1) {
                     out.write(by, 0, c);
                  }
                  out.flush();
               }
            } catch (IOException ex) {
               ex.printStackTrace();
               throw new IOException("解压失败:" + ex.toString());
            } finally {
               if (in != null) {
                  try {
                     in.close();
                  } catch (IOException ex) {
                  }
               }
               if (out != null) {
                  try {
                     out.close();
                  } catch (IOException ex) {
                  }
               }
            }
         }
      } catch (IOException ex) {
         ex.printStackTrace();
         throw new IOException("解压失败:" + ex.toString());
      } finally {
         if (zipFile != null) {
            try {
               zipFile.close();
            } catch (IOException ex) {
            }
         }
      }
   }
}

/*
 * Activity调用 package com.comc; import java.io.IOException; import
 * com.zipUtil.ZipUtil; import android.app.Activity; import android.os.Bundle;
 * public class IZipActivity extends Activity {
 * 
 * 
 * @Override public void onCreate(Bundle savedInstanceState) {
 * super.onCreate(savedInstanceState); setContentView(R.layout.main); try {
 * ZipUtil.zip("/data/data/com.comc/databases",
 * "/data/data/com.comc/databases.zip");
 * ZipUtil.unzip("/data/data/com.comc/databases.zip",
 * "/data/data/com.comc/databases"); } catch (IOException e) {
 * e.printStackTrace(); } }
 * 
 * }
 */
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;


public class Demo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        ArrayList<String> fileListsList = new ArrayList<String>();
        fileListsList.add("D:/zip/device-2016-03-26-195134.png");
        fileListsList.add("D:/demo/hyasset/config.xml");
        fileListsList.add("D:/demo.txt");
        fileListsList.add("D:/demosvn/YCCitizen/build/intermediates/dex-cache/");

        try {
            ZipUtils.zip(fileListsList, "D:/ziped/abc.zip");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

      /*
      try {
         ZipUtils.zip("D:/zip/", "D:/ziped/abc.zip");
      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }
      */

    }

}


集速网 copyRight © 2015-2022 宁ICP备15000399号-1 宁公网安备 64010402001209号
与其临渊羡鱼,不如退而结网
欢迎转载、分享、引用、推荐、收藏。