android解压sd卡中的压缩文件
2017-11-09 15:38
155 查看
我是用的ZipFile这个类,这里需要说明一下,这个类有两个一个是在org.apache.tool.zip包里,另外一个在java.util.zip包下,这个两个的区别在于后者的解压效率快于前者,但是前者可以解决被解压文件中含有中文字符乱码问题,他们的使用方法基本一致,所以就要看你需要解压的文件里是否包含中文了。
我这里就先用Apache包下的ZipFile来实现了,使用方法:
1.添加读写sd卡的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.创建ZipFile对象,并指定编码格式,避免中文乱码
ZipFile zipFile = new ZipFile(zipFileName,"GBK");
3.获取文件实体集合,也就是获取压缩文件中所有文件的集合
Enumeration e = zipFile.getEntries();//文件实体集合
4.遍历文件实体集合,创建相应的文件夹或者文件,并向文件中写入内容
while(e.hasMoreElements()) {//遍历文件实体集合
entry= (ZipEntry) e.nextElement();//获取文件实体
InputStream is= zipFile.getInputStream(entry);//获取文件的读操作流
File dstFile = new File(entry.getName());//在sd卡的对应目录下创建文件
if (!dstFile.exists()) {//判断文件是否存在
if (entry.isDirectory()) {//目录类型
dstFile.mkdirs();//创建目录
} else {//文件类型
dstFile.createNewFile();//创建文件
}
}
if (dstFile.isFile()) {//只有文件类型才继续写操作
OutputStream fos = new FileOutputStream(dstFile);
byte[] buffer = new byte[8192];
while ((count = is.read(buffer, 0, buffer.length)) != -1) {
fos.write(buffer, 0, count);
}
if (fos != null) {//别忘了在这里关闭流,否则后面会创建很多io流,造成文件打开太多异常
fos.close();
}
}
if (is != null) {//别忘了在这里关闭流,否则后面会创建很多io流,造成文件打开太多异常
is.close();
}
}
5.最后关闭zipFile对象,避免内存泄露
if (zipFile != null) {
zipFile.close();
}
最后附上包含Apache里ZipFile相关文件的jar包下载链接:点击打开链接
我这里就先用Apache包下的ZipFile来实现了,使用方法:
1.添加读写sd卡的权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
2.创建ZipFile对象,并指定编码格式,避免中文乱码
ZipFile zipFile = new ZipFile(zipFileName,"GBK");
3.获取文件实体集合,也就是获取压缩文件中所有文件的集合
Enumeration e = zipFile.getEntries();//文件实体集合
4.遍历文件实体集合,创建相应的文件夹或者文件,并向文件中写入内容
while(e.hasMoreElements()) {//遍历文件实体集合
entry= (ZipEntry) e.nextElement();//获取文件实体
InputStream is= zipFile.getInputStream(entry);//获取文件的读操作流
File dstFile = new File(entry.getName());//在sd卡的对应目录下创建文件
if (!dstFile.exists()) {//判断文件是否存在
if (entry.isDirectory()) {//目录类型
dstFile.mkdirs();//创建目录
} else {//文件类型
dstFile.createNewFile();//创建文件
}
}
if (dstFile.isFile()) {//只有文件类型才继续写操作
OutputStream fos = new FileOutputStream(dstFile);
byte[] buffer = new byte[8192];
while ((count = is.read(buffer, 0, buffer.length)) != -1) {
fos.write(buffer, 0, count);
}
if (fos != null) {//别忘了在这里关闭流,否则后面会创建很多io流,造成文件打开太多异常
fos.close();
}
}
if (is != null) {//别忘了在这里关闭流,否则后面会创建很多io流,造成文件打开太多异常
is.close();
}
}
5.最后关闭zipFile对象,避免内存泄露
if (zipFile != null) {
zipFile.close();
}
最后附上包含Apache里ZipFile相关文件的jar包下载链接:点击打开链接
相关文章推荐
- Android解压sd卡里面Zip压缩文件
- Android 压缩解压zip文件
- android复制assets里的压缩文件到sdcard里并解压
- Android实现解压压缩文件
- Android:文件按类型打开和压缩解压
- Android 压缩解压zip文件
- Android 压缩解压zip文件
- android的system.img文件的解压和压缩工具的下载地址
- android 解压ZIP文件到 SD卡 , 创建数据连接
- android压缩解压zip文件
- Android--下载zip压缩文件并解压
- android通过org.apache.tools.zip解压zip压缩文件,支持中文名
- Android -- 压缩与解压文件
- android 压缩和解压文件
- Java(Android)文件压缩和解压
- Android 压缩解压zip文件
- Android下载压缩文件与解压案例
- Android--下载zip压缩文件并解压
- Android 下载zip压缩文件并解压
- 解压assets资源文件夹的压缩文件,并下载到SD卡中。