Android zip文件压缩

来源:互联网 发布:海南省三防办 大数据 编辑:程序博客网 时间:2024/05/20 12:48

转载地址:http://jondev.net/articles/Unzipping_Files_with_Android_%28Programmatically%29

1、文件解压缩


import android.util.Log; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipInputStream;  /**  *  * @author jon  */ public class Decompress {   private String _zipFile;   private String _location;    public Decompress(String zipFile, String location) {     _zipFile = zipFile;     _location = location;      _dirChecker("");   }    public void unzip() {     try  {       FileInputStream fin = new FileInputStream(_zipFile);       ZipInputStream zin = new ZipInputStream(fin);       ZipEntry ze = null;       while ((ze = zin.getNextEntry()) != null) {         Log.v("Decompress", "Unzipping " + ze.getName());          if(ze.isDirectory()) {           _dirChecker(ze.getName());         } else {           FileOutputStream fout = new FileOutputStream(_location + ze.getName());           for (int c = zin.read(); c != -1; c = zin.read()) {             fout.write(c);           }            zin.closeEntry();           fout.close();         }                }       zin.close();     } catch(Exception e) {       Log.e("Decompress", "unzip", e);     }    }    private void _dirChecker(String dir) {     File f = new File(_location + dir);      if(!f.isDirectory()) {       f.mkdirs();     }   } } 


2、文件压缩

import android.util.Log; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream;   public class Compress {   private static final int BUFFER = 2048;    private String[] _files;   private String _zipFile;    public Compress(String[] files, String zipFile) {     _files = files;     _zipFile = zipFile;   }    public void zip() {     try  {       BufferedInputStream origin = null;       FileOutputStream dest = new FileOutputStream(_zipFile);        ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(dest));        byte data[] = new byte[BUFFER];        for(int i=0; i < _files.length; i++) {         Log.v("Compress", "Adding: " + _files[i]);         FileInputStream fi = new FileInputStream(_files[i]);         origin = new BufferedInputStream(fi, BUFFER);         ZipEntry entry = new ZipEntry(_files[i].substring(_files[i].lastIndexOf("/") + 1));         out.putNextEntry(entry);         int count;         while ((count = origin.read(data, 0, BUFFER)) != -1) {           out.write(data, 0, count);         }         origin.close();       }        out.close();     } catch(Exception e) {       e.printStackTrace();     }    }  }