下面的android的源码:

//AndroidUnZip.java

package com.hl;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.ListActivity;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
/**
* zip解压软件,不支持中文路径!
*
*/
public class AndroidUnZip extends ListActivity {
private List<File> txtList = new ArrayList<File>(); ;

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
File sdCardPath = Environment.getExternalStorageDirectory();
GetFiles( sdCardPath );
}
/**
* 获取文件列表
* @param filePath
*/
public void GetFiles( File filePath ){
int i;
File[] files = filePath.listFiles();
if(files != null){
for(i=0;i<files.length;i++){
if(files[i].isDirectory()){
GetFiles( files[i] );
}
else if(files[i].getName().toLowerCase().endsWith(".zip")){
txtList.add(files[i]);
}
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,FileToStr(txtList));
setListAdapter(adapter);
}
}
/**
* 把文件列表转换成字符串
* @param f
* @return
*/
public String[] FileToStr( List<File> f ){
ArrayList<String> listStr = new ArrayList<String>();
int i;
for (i = 0; i < f.size(); i++) {
String nameString = f.get(i).getName();
listStr.add(nameString);
}
return listStr.toArray(new String[0]);
}
/**
* 当List中有点击时被激活
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
File file = txtList.get(position);
String f=file.toString();
UnZip zip=new UnZip(f);
if(zip.getStaus())
Toast.makeText(AndroidUnZip.this, "解压成功!", Toast.LENGTH_SHORT).show();
else
Toast.makeText(AndroidUnZip.this, "解压失败!", Toast.LENGTH_SHORT).show();
}
}

//UnZip.java

package com.hl;
import java.io.DataOutputStream;
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.ZipInputStream;


public class UnZip {

private boolean staus=false;

public UnZip(String file){
String unzipfile = file; //解压缩的文件名包含路径
try {
File olddirec = new File(unzipfile); //解压缩的文件路径(为了获取路径)
ZipInputStream zin = new ZipInputStream(new FileInputStream(unzipfile));
ZipEntry entry;
//创建文件夹
while ( (entry = zin.getNextEntry()) != null){
if (entry.isDirectory()) {
File directory = new File(olddirec.getParent(), entry.getName());
if (!directory.exists())
if (!directory.mkdirs())
System.exit(0);
zin.closeEntry();
}
if (!entry.isDirectory()) {
File myFile = new File(entry.getName());
//输出路径
String ofile=file.replace(".zip", "");
File fo=new File(ofile);
if(!fo.exists()){
fo.mkdir();
}
FileOutputStream fout = new FileOutputStream(ofile+"/"+myFile.getPath());
DataOutputStream dout = new DataOutputStream(fout);
byte[] b = new byte[1024];
int len = 0;
while ( (len = zin.read(b)) != -1) {
dout.write(b, 0, len);
}
dout.close();
fout.close();
zin.closeEntry();
staus=true;
}
}
}
catch (IOException e) {
e.printStackTrace();
}

}
public boolean getStaus(){
return staus;
}

}

完成了!但是还有一样东西别忘了!那就权限啦!

<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>