四. 压缩文件 ZipFile
public class ZipFile implements ZipConstants, Closeable { }
四.一 方法
四.一.一 构造方法
四.一.一.一 方法
四.一.一.二 演示
@Test public void zipFileConTest() throws Exception{ //第一种方式,传入文件 File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a.zip"); ZipFile zipFile=new ZipFile(file); //第二种方式,传入文件的路径 String path="E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a.zip"; ZipFile zipFile1=new ZipFile(path); }
四.一.二 其他方法
四.二 演示压缩文件 ZipFile
四.二.一 获取压缩文件的基本信息
@Test public void zipFileTest() throws Exception{ File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a.zip"); ZipFile zipFile=new ZipFile(file); System.out.println("获取文件注释:"+zipFile.getComment()); System.out.println("文件名称:"+zipFile.getName()); System.out.println("文件大小:"+zipFile.size()); //根据名称,获取 zipEntry ZipEntry zipEntry=zipFile.getEntry("data.txt"); System.out.println("输出名称:"+zipEntry.getName()); //根据 zipEntry 获取 输入流 InputStream inputStream=zipFile.getInputStream(zipEntry); System.out.println("*************************"); //获取压缩文件下的所有条目 Enumeration<? extends ZipEntry> entries = zipFile.entries(); while(entries.hasMoreElements()){ ZipEntry temp=entries.nextElement(); System.out.println("输出名称:"+temp.getName()); } }
运行程序, 控制台打印输出:
四.二.二 根据条目文件名称,解压缩单个文件
@Test public void zipFile1Test() throws Exception{ //1. 先定义好输出流 File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"解压缩单个文件.txt"); OutputStream outputStream=new FileOutputStream(file); //找到压缩文件 File inputFile=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a.zip"); ZipFile zipFile=new ZipFile(inputFile); //根据名称,获取 ZipEntry。 只解压缩 a.zip 中的 data.txt 文件 ZipEntry zipEntry=zipFile.getEntry("data.txt"); //获取输入流 InputStream inputStream=zipFile.getInputStream(zipEntry); byte[] bytes=new byte[1024]; int len=-1; //读出 while((len=inputStream.read(bytes))!=-1){ //写入 outputStream.write(bytes,0,len); } outputStream.close(); inputStream.close(); }
运行程序,查看文件系统
内容也是有的,与 a.zip 文件下的 data.txt 内容一致。
现在解压缩,我们知道要解压缩的文件名称,然而大部分情况下,是不知道要解压缩的文件名称的。
五. ZipInputStream
解压缩文件的输入流。
五.一 方法
五.一.一 构造方法
五.一.一.一 方法
五.一.一.二 举例
@Test public void zipInputStreamConTest() throws Exception{ //File inputFile=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" // +File.separator+"jdk91.zip"); File inputFile=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a.zip"); InputStream inputStream=new FileInputStream(inputFile); // 传入输入流 ZipInputStream zipInputStream=new ZipInputStream(inputStream); }
五.一.二 其他方法
五.二. 举例 ZipInputStream
五.二.一 解压缩文件
//解压缩文件 @Test public void zipFile2Test() throws Exception{ //1. 先定义好解压缩的文件 File file=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"c"); //找到压缩文件 File inputFile=new File("E:"+ File.separator+"ideaWork"+File.separator+"Java2"+File.separator+"fileSrc" +File.separator+"a.zip"); InputStream inputStream=new FileInputStream(inputFile); //输入流 ZipInputStream zipInputStream=new ZipInputStream(inputStream); //压缩文件 ZipFile zipFile=new ZipFile(inputFile); //定义每一个文件 ZipEntry zipEntry=null; //先看父存不在 if(file.getParent()==null){ file.mkdirs(); } while((zipEntry=zipInputStream.getNextEntry())!=null){ //说明有子。 String name=zipEntry.getName(); //解压到当前的目录。 File newFile=new File(file,name); if(!newFile.getParentFile().exists()){ newFile.getParentFile().mkdirs(); } //创建当前文件 if(!newFile.exists()){ newFile.createNewFile(); } //获取每一个流,根据 zipEntry InputStream inputStream1=zipFile.getInputStream(zipEntry); //替换型 OutputStream newOutputStream=new FileOutputStream(newFile); byte[] bytes=new byte[1024]; int len=-1; while((len=inputStream1.read(bytes))!=-1){ //写入 newOutputStream.write(bytes,0,len); } newOutputStream.close(); inputStream1.close(); } System.out.println("文件夹解压缩成功"); zipInputStream.close(); inputStream.close(); }
现在,系统里面没有 c 文件夹。
运行程序,查看文件系统,解压缩成功。
谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!