java解压多目录Zip文件(解决中文乱码问题)--转载
发布时间:2020-12-14 06:21:00 所属栏目:Java 来源:网络整理
导读:原文地址:http://zhangyongbo.iteye.com/blog/1749439 /spanspan style="color: #0000ff;"gt;private/span span style="color: #0000ff;"gt;static/span span style="color: #0000ff;"gt;final/span span style="color: #0000ff;"gt;int/span buffer = 2048
原文地址:http://zhangyongbo.iteye.com/blog/1749439 </span><span style="color: #0000ff;">private</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">final</span> <span style="color: #0000ff;">int</span> buffer = 2048<span style="color: #000000;">;
</span><span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> main(String[] args)
{
unZip(</span>"E:javaAndroidaaa.zip"<span style="color: #000000;">);
}
</span><span style="color: #008000;">/**</span><span style="color: #008000;">
* 解压Zip文件
* </span><span style="color: #808080;">@param</span><span style="color: #008000;"> path 文件目录
</span><span style="color: #008000;">*/</span>
<span style="color: #0000ff;">public</span> <span style="color: #0000ff;">static</span> <span style="color: #0000ff;">void</span><span style="color: #000000;"> unZip(String path)
{
</span><span style="color: #0000ff;">int</span> count = -1<span style="color: #000000;">;
String savepath </span>= ""<span style="color: #000000;">;
File file </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
InputStream is </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
FileOutputStream fos </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
BufferedOutputStream bos </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
savepath </span>= path.substring(0,path.lastIndexOf(".")) + File.separator; <span style="color: #008000;">//</span><span style="color: #008000;">保存解压文件目录</span>
<span style="color: #0000ff;">new</span> File(savepath).mkdir(); <span style="color: #008000;">//</span><span style="color: #008000;">创建保存目录</span>
ZipFile zipFile = <span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
zipFile </span>= <span style="color: #0000ff;">new</span> ZipFile(path,"gbk"); <span style="color: #008000;">//</span><span style="color: #008000;">解决中文乱码问题</span>
Enumeration<?> entries =<span style="color: #000000;"> zipFile.getEntries();
</span><span style="color: #0000ff;">while</span><span style="color: #000000;">(entries.hasMoreElements())
{
</span><span style="color: #0000ff;">byte</span> buf[] = <span style="color: #0000ff;">new</span> <span style="color: #0000ff;">byte</span><span style="color: #000000;">[buffer];
ZipEntry entry </span>=<span style="color: #000000;"> (ZipEntry)entries.nextElement();
String filename </span>=<span style="color: #000000;"> entry.getName();
</span><span style="color: #0000ff;">boolean</span> ismkdir = <span style="color: #0000ff;">false</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">if</span>(filename.lastIndexOf("/") != -1){ <span style="color: #008000;">//</span><span style="color: #008000;">检查此文件是否带有文件夹</span>
ismkdir = <span style="color: #0000ff;">true</span><span style="color: #000000;">;
}
filename </span>= savepath +<span style="color: #000000;"> filename;
</span><span style="color: #0000ff;">if</span>(entry.isDirectory()){ <span style="color: #008000;">//</span><span style="color: #008000;">如果是文件夹先创建</span>
file = <span style="color: #0000ff;">new</span><span style="color: #000000;"> File(filename);
file.mkdirs();
</span><span style="color: #0000ff;">continue</span><span style="color: #000000;">;
}
file </span>= <span style="color: #0000ff;">new</span><span style="color: #000000;"> File(filename);
</span><span style="color: #0000ff;">if</span>(!file.exists()){ <span style="color: #008000;">//</span><span style="color: #008000;">如果是目录先创建</span>
<span style="color: #0000ff;">if</span><span style="color: #000000;">(ismkdir){
</span><span style="color: #0000ff;">new</span> File(filename.substring(0,filename.lastIndexOf("/"))).mkdirs(); <span style="color: #008000;">//</span><span style="color: #008000;">目录先创建</span>
<span style="color: #000000;"> } <span style="color: #000000;"> is =<span style="color: #000000;"> zipFile.getInputStream(entry); fos = <span style="color: #0000ff;">new<span style="color: #000000;"> FileOutputStream(file); bos = <span style="color: #0000ff;">new<span style="color: #000000;"> BufferedOutputStream(fos,buffer);
} 指定目录重新的方法如下:
count = -1 File file </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
InputStream is </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
FileOutputStream fos </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
BufferedOutputStream bos </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
ZipFile zipFile </span>= <span style="color: #0000ff;">null</span><span style="color: #000000;">;
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">
{
zipFile </span>= <span style="color: #0000ff;">new</span> ZipFile(path,count);
}
bos.flush();
bos.close();
fos.close();
is.close();
}
zipFile.close();
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(IOException ioe){
ioe.printStackTrace();
}</span><span style="color: #0000ff;">finally</span><span style="color: #000000;">{
</span><span style="color: #0000ff;">try</span><span style="color: #000000;">{
</span><span style="color: #0000ff;">if</span>(bos != <span style="color: #0000ff;">null</span><span style="color: #000000;">){
bos.close();
}
</span><span style="color: #0000ff;">if</span>(fos != <span style="color: #0000ff;">null</span><span style="color: #000000;">) {
fos.close();
}
</span><span style="color: #0000ff;">if</span>(is != <span style="color: #0000ff;">null</span><span style="color: #000000;">){
is.close();
}
</span><span style="color: #0000ff;">if</span>(zipFile != <span style="color: #0000ff;">null</span><span style="color: #000000;">){
zipFile.close();
}
}</span><span style="color: #0000ff;">catch</span><span style="color: #000000;">(Exception e) {
e.printStackTrace();
}
}
}</span></pre>
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |