失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 利用java进行zip文件解压缩

利用java进行zip文件解压缩

时间:2023-06-05 15:36:41

相关推荐

利用java进行zip文件解压缩

利用java进行zip文件解压缩

本文利用Java的zip包中的ZipFile和ZipEntry两个类,获取到压缩包中的所有文件,并将压缩文件通过InputStream写入一个byte数组,再将该byte数组赋值给FileOutputStream中实现压缩文件的解压操作。最后再返回一个包括所有文件绝对路径名的ArrayList

import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;public class FileUtil {public static void main(String[] args) {System.out.println("start to compress");ArrayList<String> list=GetFile("H:\\remote\\somegit.zip","H:\\remote\\");}public static ArrayList<String> GetFile(String srcFile,String desDirectory) {ArrayList<String> directories=new ArrayList<>();File zippedFile=new File(srcFile);try {if(!zippedFile.exists())throw new FileNotFoundException();if(!srcFile.endsWith("zip")) {throw new Exception("文件格式不对");}ZipFile zf=new ZipFile(srcFile);//ZipInputStream zis=new ZipInputStream(new FileInputStream(zippedFile));Enumeration<? extends ZipEntry> zipe=zf.entries();String directory="";String file_name="";while(zipe.hasMoreElements()) {ZipEntry ze=zipe.nextElement();if(directory.endsWith("\\"))directory=desDirectory+ze.getName();else {directory =desDirectory+"\\"+ze.getName();}File f_d=new File(directory);if(ze.isDirectory()) {if(!f_d.exists())f_d.mkdirs();}else {if(!f_d.exists())f_d.createNewFile();try(InputStream fis=zf.getInputStream(ze);FileOutputStream fos=new FileOutputStream(f_d);){byte[] b_p=new byte[1024];int length=-1;while((length=fis.read(b_p))>0) {fos.write(b_p);}fos.flush();directories.add(f_d.getAbsolutePath());}catch(Exception e) {e.printStackTrace();return null;}}}String s_file="";return directories;}catch(Exception e) {e.printStackTrace();return null;}}}

一、利用压缩文件名创建一个ZipFile对象,利用ZipFile获取一个Enumeration<? extends ZipEntry>

ZipFile zf=new ZipFile(srcFile);

Enumeration<? extends ZipEntry> zipe=zf.entries()

二、对Enumeration中的每一个zipentry进行操作,如果是文件夹则获取文件夹路径,如果是文件则通过输入流写入byte数组,同时将byte数组的内容写入输出流,并将在本地的文件路径添加到ArrayList当中。

while(zipe.hasMoreElements()) {ZipEntry ze=zipe.nextElement();if(directory.endsWith("\\"))directory=desDirectory+ze.getName();else {directory =desDirectory+"\\"+ze.getName();}File f_d=new File(directory);if(ze.isDirectory()) {if(!f_d.exists())f_d.mkdirs();}else {if(!f_d.exists())f_d.createNewFile();try(InputStream fis=zf.getInputStream(ze);FileOutputStream fos=new FileOutputStream(f_d);){byte[] b_p=new byte[1024];int length=-1;while((length=fis.read(b_p))>0) {fos.write(b_p);}fos.flush();directories.add(f_d.getAbsolutePath());}

如果觉得《利用java进行zip文件解压缩》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。