• java IO流 Zip文件操作


    一.简介

        压缩流操作主要的三个类 ZipOutputStream、ZipFile、ZipInputStream ,经常可以看到各种压缩文件:zip、jar、GZ格式的压缩文件

    二.ZipEntry

     说明:在实例化ZipEntry 的时候,要设置名称,此名称实际上就是压缩文件中每一个元素的名称。

    三、ZipOutputStream

    四、压缩一个文件

    import java.io.File ;  
    import java.io.FileInputStream ;  
    import java.io.InputStream ;  
    import java.util.zip.ZipEntry ;  
    import java.util.zip.ZipOutputStream ;  
    import java.io.FileOutputStream ;  
    public class ZipOutputStreamDemo01{  
        public static void main(String args[]) throws Exception{    // 所有异常抛出  
            File file = new File("d:" + File.separator + "mldn.txt") ;  // 定义要压缩的文件  
            File zipFile = new File("d:" + File.separator + "mldn.zip") ;   // 定义压缩文件名称  
            InputStream input = new FileInputStream(file) ; // 定义文件的输入流  
            ZipOutputStream zipOut = null ; // 声明压缩流对象  
            zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;  
            zipOut.putNextEntry(new ZipEntry(file.getName())) ; // 设置ZipEntry对象  
            zipOut.setComment("www.mldnjava.cn") ;  // 设置注释  
            int temp = 0 ;  
            while((temp=input.read())!=-1){ // 读取内容  
                zipOut.write(temp) ;    // 压缩输出  
            }  
            input.close() ; // 关闭输入流  
            zipOut.close() ;    // 关闭输出流  
        }  
    };  
    

    五、压缩一个文件夹

    import java.io.File ;  
    import java.io.FileInputStream ;  
    import java.io.InputStream ;  
    import java.util.zip.ZipEntry ;  
    import java.util.zip.ZipOutputStream ;  
    import java.io.FileOutputStream ;  
    public class ZipOutputStreamDemo02{  
        public static void main(String args[]) throws Exception{    // 所有异常抛出  
            File file = new File("d:" + File.separator + "mldn") ;  // 定义要压缩的文件夹  
            File zipFile = new File("d:" + File.separator + "mldndir.zip") ;    // 定义压缩文件名称  
            InputStream input = null ;  // 定义文件输入流  
            ZipOutputStream zipOut = null ; // 声明压缩流对象  
            zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;  
            zipOut.setComment("www.mldnjava.cn") ;  // 设置注释  
            int temp = 0 ;  
            if(file.isDirectory()){ // 判断是否是文件夹  
                File lists[] = file.listFiles() ;   // 列出全部文件  
                for(int i=0;i<lists.length;i++){  
                    input = new FileInputStream(lists[i]) ; // 定义文件的输入流  
                    zipOut.putNextEntry(new ZipEntry(file.getName()  
                        +File.separator+lists[i].getName())) ;  // 设置ZipEntry对象  
                    while((temp=input.read())!=-1){ // 读取内容  
                        zipOut.write(temp) ;    // 压缩输出  
                    }  
                    input.close() ; // 关闭输入流  
                }  
            }  
            zipOut.close() ;    // 关闭输出流  
        }  
    };  
    

    六、 ZipFile

    第一步:为 ZipFile 实例化,实例化时需要接收File  类的引用

    import java.io.File ;  
    import java.io.FileInputStream ;  
    import java.io.InputStream ;  
    import java.util.zip.ZipEntry ;  
    import java.util.zip.ZipOutputStream ;  
    import java.util.zip.ZipFile ;  
    import java.io.FileOutputStream ;  
    public class ZipFileDemo01{  
        public static void main(String args[]) throws Exception{    // 所有异常抛出  
            File file = new File("d:" + File.separator + "mldn.zip") ;  // 找到压缩文件  
            ZipFile zipFile = new ZipFile(file) ;   // 实例化ZipFile对象  
            System.out.println("压缩文件的名称:" + zipFile.getName()) ;    // 得到压缩文件的名称  
        }  
    };  
    

    通过ZipFile 文件,为mldn.zip 进行解压缩操作

    import java.io.File ;  
    import java.io.FileInputStream ;  
    import java.io.InputStream ;  
    import java.util.zip.ZipEntry ;  
    import java.util.zip.ZipOutputStream ;  
    import java.io.FileOutputStream ;  
    public class ZipOutputStreamDemo02{  
        public static void main(String args[]) throws Exception{    // 所有异常抛出  
            File file = new File("d:" + File.separator + "mldn") ;  // 定义要压缩的文件夹  
            File zipFile = new File("d:" + File.separator + "mldndir.zip") ;    // 定义压缩文件名称  
            InputStream input = null ;  // 定义文件输入流  
            ZipOutputStream zipOut = null ; // 声明压缩流对象  
            zipOut = new ZipOutputStream(new FileOutputStream(zipFile)) ;  
            zipOut.setComment("www.mldnjava.cn") ;  // 设置注释  
            int temp = 0 ;  
            if(file.isDirectory()){ // 判断是否是文件夹  
                File lists[] = file.listFiles() ;   // 列出全部文件  
                for(int i=0;i<lists.length;i++){  
                    input = new FileInputStream(lists[i]) ; // 定义文件的输入流  
                    zipOut.putNextEntry(new ZipEntry(file.getName()  
                        +File.separator+lists[i].getName())) ;  // 设置ZipEntry对象  
                    while((temp=input.read())!=-1){ // 读取内容  
                        zipOut.write(temp) ;    // 压缩输出  
                    }  
                    input.close() ; // 关闭输入流  
                }  
            }  
            zipOut.close() ;    // 关闭输出流  
        }  
    }; 
  • 相关阅读:
    MarkDown语法总结
    HashMap
    [LeetCode] 102. Binary Tree Level Order Traversal(二叉树的中序遍历)
    [LeetCode] 287. Find the Duplicate Number(寻找重复数字)
    [LeetCode] 215. Kth Largest Element in an Array(数组里的第 k 大元素)
    [LeetCode] 39. Combination Sum(组合的和)
    [LeetCode] 49. Group Anagrams(分组相同字母异序词)
    [LeetCode] 48. Rotate Image(旋转图片)
    [LeetCode] 647. Palindromic Substrings(回文子串)
    [LeetCode] 238. Product of Array Except Self(数组除自身元素外的乘积)
  • 原文地址:https://www.cnblogs.com/hongwz/p/5649905.html
Copyright © 2020-2023  润新知