2023年7月7日发(作者:)
android zip解压
filed in android post by onelong on2010-8-31 0:50 Tuesday
最近在老是泡论坛!看到别人的问题,突然做一个zip解压软件!zip是开源的,不同rar!zip解压软件就是使用了java 的zip包!不过不支持中文的路径,如果你的zip包里包含中文名的东西,呵呵,没办法解压了!Java 毕竟是外国的东西呀!中文支持得不好!是不是没有办法解决呢?不是的,使用apache 的就支持中文的!
下面的android的源码:
//
package ;
import ;
import ist;
import ;
import tivity;
import ;
import nment;
import ;
import dapter;
import ew;
import ;
/**
* zip解压软件,不支持中文路径!
*
*/
public class AndroidUnZip extends ListActivity {
private List
public void onCreate(Bundle savedInstanceState) { te(savedInstanceState);
File sdCardPath = ernalStorageDirectory();
GetFiles( sdCardPath );
}
/**
* 获取文件列表
* @param filePath
*/
public void GetFiles( File filePath ){
int i;
File[] files = les();
if(files != null){
for(i=0;i<;i++){
if(files[i].isDirectory()){
GetFiles( files[i] );
}
else if(files[i].getName().toLowerCase().endsWith(".zip")){
(files[i]);
}
}
ArrayAdapter
ArrayAdapter
setListAdapter(adapter);
}
}
/**
* 把文件列表转换成字符串
* @param f * @return
*/
public String[] FileToStr( List
ArrayList
int i;
for (i = 0; i < (); i++) {
String nameString = (i).getName();
(nameString);
}
return y(new String[0]);
}
/**
* 当List中有点击时被激活
*/
protected void onListItemClick(ListView l, View v, int position, long id) {
File file = (position);
String f=ng();
UnZip zip=new UnZip(f);
if(us())
xt(, "解压成功!", _SHORT).show();
else
xt(, "解压失败!", _SHORT).show();
}
}
//
package ;
import tputStream;
import ; import putStream;
import tputStream;
import ption;
import ry;
import utStream;
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 = tEntry()) != null){
if (ctory()) {
File directory = new File(ent(), e());
if (!())
if (!())
(0);
ntry();
}
if (!ctory()) {
File myFile = new File(e());
//输出路径 String ofile=e(".zip", "");
File fo=new File(ofile);
if(!()){
();
}
FileOutputStream fout = new FileOutputStream(ofile+"/"+h());
DataOutputStream dout = new DataOutputStream(fout);
byte[] b = new byte[1024];
int len = 0;
while ( (len = (b)) != -1) {
(b, 0, len);
}
();
();
ntry();
staus=true;
}
}
}
catch (IOException e) {
tackTrace();
}
}
public boolean getStaus(){
return staus;
}
} 完成了!但是还有一样东西别忘了!那就权限啦!
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688677214a161761.html
评论列表(0条)