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的源码:
//And...
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 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解压】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。