当前位置: 代码迷 >> Android >> android 解压文件步骤
  详细解决方案

android 解压文件步骤

热度:39   发布时间:2016-04-28 06:13:31.0
android 解压文件方法
package com.tomatonow.zip;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.io.UnsupportedEncodingException;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipException;import java.util.zip.ZipFile;public class TestZip {	/**	 * 解压缩功能. 将zipFile文件解压到folderPath目录下.	 * 	 * @throws Exception	 */	public int upZipFile(File zipFile, String folderPath) throws ZipException,			IOException {		ZipFile zfile = new ZipFile(zipFile);		Enumeration zList = zfile.entries();		ZipEntry ze = null;		byte[] buf = new byte[1024];		while (zList.hasMoreElements()) {			ze = (ZipEntry) zList.nextElement();			if (ze.isDirectory()) {				String dirstr = folderPath + ze.getName();				dirstr = new String(dirstr.getBytes("utf-8"), "utf-8");				File f = new File(dirstr);								continue;			}			OutputStream os = new BufferedOutputStream(new FileOutputStream(					getRealFileName(folderPath, ze.getName())));			InputStream is = new BufferedInputStream(zfile.getInputStream(ze));			int readLen = 0;			while ((readLen = is.read(buf, 0, 1024)) != -1) {				os.write(buf, 0, readLen);			}			is.close();			os.close();		}		zfile.close();		return 0;	}	/**	 * 给定根目录,返回一个相对路径所对应的实际文件名.	 * 	 * @param baseDir	 *            指定根目录	 * @param absFileName	 *            相对路径名,来自于ZipEntry中的name	 * @return java.io.File 实际的文件	 */	public static File getRealFileName(String baseDir, String absFileName) {		String[] dirs = absFileName.split("/");		File ret = new File(baseDir);		String substr = null;		if (dirs.length > 1) {			for (int i = 0; i < dirs.length - 1; i++) {				substr = dirs[i];				try {					substr = new String(substr.getBytes("utf-8"), "utf-8");				} catch (UnsupportedEncodingException e) {					e.printStackTrace();				}				ret = new File(ret, substr);			}			if (!ret.exists())				ret.mkdirs();			substr = dirs[dirs.length - 1];			try {				substr = new String(substr.getBytes("utf-8"), "utf-8");			} catch (UnsupportedEncodingException e) {				e.printStackTrace();			}			ret = new File(ret, substr);			return ret;		}		return ret;	}	public static void main(String[] args) {		TestZip testZip = new TestZip();		try {			testZip.upZipFile(new File("/Users/bruse/Desktop/aa.zip"),					"/Users/bruse/Desktop/bb");		} catch (ZipException e) {			e.printStackTrace();		} catch (IOException e) {			e.printStackTrace();		}	}} :arrow: 

记得要在AndroidManifest.xml里添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
  相关解决方案