`
zhelong111
  • 浏览: 189512 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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"/>
分享到:
评论

相关推荐

    Android 解压缩文件

    Android解压缩文件。Android原生的解压缩文件,使用时提供保存的路径即可

    Android实现下载zip压缩文件并解压的方法(附源码)

    其实在网上有很多介绍下载文件或者解压zip文件的文章,但是两者结合的不多,所以这篇文章在此记录一下下载zip文件并直接解压的方法,直接上代码,文末有源码下载。 下载: import java.io.BufferedInputStream; ...

    Android zip文件压缩解压

    在Android平台上,对zip文件进行压缩和解压是常见的任务,尤其在开发应用程序时,可能需要将资源文件打包成zip格式以便传输或存储。本文将详细介绍如何在Android中处理zip文件,包括压缩和解压的基本步骤,以及相关...

    Android将assets中的zip压缩文件解压到SD卡

    在Android开发中,有时我们需要将应用内部的资源文件,如ZIP压缩文件,解压到外部存储(即SD卡)上,以便用户可以访问或使用这些数据。本文将详细讲解如何实现这一功能,主要涉及Android权限管理、文件操作以及ZIP...

    androidstudio视频文件压缩Demo

    本示例“androidstudio视频文件压缩Demo”提供了一个详细的解决方案,它演示了如何在Android Studio项目中实现视频文件的压缩,并且还带有进度条反馈,让用户能够了解压缩过程的实时状态。以下是对这个Demo的深入...

    Android 在线下载压缩包并解压到指定目录.zip

    首先,创建一个`ZipInputStream`,传入下载好的压缩文件的输入流。然后,遍历`ZipInputStream`,每次读取一个`ZipEntry`,创建对应的`FileOutputStream`,并将`ZipInputStream`的数据写入到新的文件。 6. **指定...

    android 解压zip文件

    本文将深入探讨如何在Android中解压zip文件,并结合打包zip文件的概念,以帮助你更好地理解整个过程。 首先,我们需要了解zip文件的原理。ZIP是一种常用的文件格式,用于压缩一个或多个文件或目录,以便节省存储...

    android jni使用libzip读取压缩文件

    本示例着重讲解如何使用JNI结合libzip库来读取压缩文件,同时对比了通过NDK自带的API接口读取assets资源文件的方法。 libzip是一个开源的C库,用于处理ZIP档案,包括读取、创建、更新和提取文件。在Android环境中,...

    两个文件android.iml文件 和android.ipr文件

    不需要进行复杂的设置或者编译步骤,只需解压文件,然后将这两个文件放入源码的根目录,接着在Android Studio中打开`.ipr`文件即可导入项目。这样,Android Studio就能根据这些配置文件自动设置项目环境,使得开发者...

    Android安卓img镜像文件解压,安卓备份文件解压,安卓备份的img文件解压缩

    需要解压安卓备份的img文件的来拿把,在Windows中查看img,支持XP,VISTA,WIN7,WIN8,更高.. Android安卓img镜像文件解压,安卓备份文件解压,安卓备份的img文件解压缩 很方便

    Android 解压文件夹带进度条

    在Android开发中,有时我们需要对用户提供的压缩文件进行解压操作,例如从网络下载的ZIP文件。为了提供更好的用户体验,通常会添加一个进度条来显示解压过程的进度。本篇将详细介绍如何在Android应用中实现带进度条...

    android ZIP文件的解压

    虽然Android内建的API可以处理ZIP文件,但有些第三方库如`Apache Commons Compress`和`Zip4j`提供了更高级的功能,如密码保护的ZIP文件解压,或者处理更复杂的压缩算法。 7. **性能优化** 对于大量数据的解压,...

    安卓文件下载上传解压相关-AndroidZIP文件下载以及解压.zip

    在Android平台上,处理文件下载、上传以及解压是常见的任务,尤其在开发应用程序时。本教程将重点关注ZIP文件的下载和解压操作。首先,我们需要理解Android提供的IO和文件系统接口,然后掌握如何使用这些接口来处理...

    Android文件管理器

    - **压缩与解压缩**:支持ZIP、RAR等常见格式的压缩包处理,方便用户节省存储空间或传输大文件。 - **云存储集成**:可以连接Google Drive、Dropbox等云服务,实现本地与云端文件的同步。 - **网络浏览**:通过...

    android文件管理系统

    Android文件管理器还具备其他高级功能,例如共享文件、压缩和解压缩文件、查看各种文件类型的预览,以及通过网络访问远程存储(如FTP、SMB等)。这些特性使得用户能够全面地控制和管理他们的数据。 在实际使用中,...

    Android 把assest资源包下的压缩文件复制解压到SDcard指定位置。

    这里,我们关注的是如何将Android应用程序的Asset资源包中的压缩文件(例如ZIP格式)解压并复制到SD卡上的特定位置。这个过程涉及到几个关键步骤,包括访问Asset资源、读取压缩文件、解压缩文件以及写入SD卡。 首先...

    android文件下载上传&解压

    - **ZIP解压**:Android内置了`ZipFile`类,可以读取ZIP格式的压缩文件,遍历每个条目并解压缩到目标目录。`Inflater`用于解压缩数据。 - **RAR解压**:RAR格式解压需要第三方库,如`android-rar`,因为它不是...

    android 更新文件

    3. **解压文件**:使用`ZipEntry`对象和`OutputStream`(例如`AssetManager`的`open()`方法返回的流)来解压文件到assets目录。 4. **覆盖旧文件**:如果assets目录中已经存在同名文件,需要先删除旧文件,再写入新...

    java android zip解压缩(解决压缩中文乱码问题)

    在Android开发中,处理压缩文件是一项常见的任务,尤其...这是一个轻量级且高效的方法,对于处理跨平台的压缩文件问题尤其有用。在实际开发中,我们应该始终关注字符编码问题,确保在各种环境下数据的正确性和一致性。

    Android 文件上传Demo

    - **优化**:压缩文件减少传输大小,设置超时时间避免无响应,合理调度多线程提高上传效率。 5. **代码示例** - "UploadTol"可能包含了客户端的文件选择、读取、上传逻辑,使用了特定的HTTP库进行网络请求。 - ...

Global site tag (gtag.js) - Google Analytics