android zip解压-

发布时间:

android zip解压
filed in android post by onelong on2010-8-31 0:50 Tuesday 最近在老是泡论坛!看到别人的问题,突然做一个zip解压软件!zip是开源的,不同rar!zip解压软件就是使用了java zip包!不过不支持中文的路径,如果你的zip包里包含中文名的东西,呵呵,没办法解压了!Java 毕竟是外国的东西呀!中文支持得不好!是不是没有办法解决呢?不是的,使用apache ant.jar就支持中文的! 下面的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 txtList = new ArrayList(; ;
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 if(files[i].isDirectory({ GetFiles( files[i] ; } else if(files[i].getName(.toLowerCase(.endsWith(".zip"{ txtList.add(files[i]; } } ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,FileToStr(txtList; setListAdapter(adapter; } } /** * 把文件列表转换成字符串 * @param f
* @return */ public String[] FileToStr( List f {
ArrayList listStr = new ArrayList(; 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; } }
完成了!但是还有一样东西别忘了!那就权限啦!


android zip解压-

相关推荐