Java实现zip文件压缩与解压缩

多个文件压缩

    /**
     * 原生代码
     * 将一个图片与一个视频文件压缩到 test.zip 中
     */
    public static void main(String[] args) throws IOException {
        //压缩文件名称与位置
        OutputStream outputStream = new FileOutputStream("f://test.zip");
        //获取压缩文件输出流
        ZipOutputStream out = new ZipOutputStream(outputStream,Charset.forName("GBK"));
        //被压缩的文件
        FileInputStream fis = new FileInputStream("F://video.mp4");
        //video.mp4在压缩包zip 中的音乐名称
        out.putNextEntry(new ZipEntry("视频.mp4"));
        int len;
        byte[] buffer = new byte[1024];
        // 读入需要下载的文件的内容,打包到zip文件
        while ((len = fis.read(buffer)) > 0) {
            //写入压缩文件输出流中(压缩文件zip中)
            out.write(buffer, 0, len);
        }
        fis.close();

        //第二个被压缩文件
        FileInputStream fis1 = new FileInputStream("F://picture.jpg");
        //picture.jpg在压缩包中的名称 图片.jpg
        out.putNextEntry(new ZipEntry("图片.jpg"));
        int len1;
        byte[] buffer1 = new byte[1024];
        // 读入需要下载的文件的内容,打包到zip文件
        while ((len1 = fis1.read(buffer1)) > 0) {
            out.write(buffer1, 0, len1);
        }
        //关闭流
        out.closeEntry();
        fis1.close();
        out.close();
    }

 

 

 

 zip文件解压

    /**
     * zip压缩文 解压
     */
    public static void main(String[] args) throws IOException {
        //读取压缩文件
        ZipInputStream in = new ZipInputStream(new FileInputStream("f://test.zip"),Charset.forName("GBK"));
        //zip文件实体类
        ZipEntry entry;
        //遍历压缩文件内部 文件数量
        while((entry = in.getNextEntry()) != null){
            if(!entry.isDirectory()){
                //文件输出流
                FileOutputStream out = new FileOutputStream( "f://java_zip/"+entry.getName());
                BufferedOutputStream bos = new BufferedOutputStream(out);
                int len;
                byte[] buf = new byte[1024];
                while ((len = in.read(buf)) != -1) {
                    bos.write(buf, 0, len);
                }
                // 关流顺序,先打开的后关闭
                bos.close();
                out.close();
            }
        }
    }

 

 

 

 

posted @ 2020-03-13 13:38  lanwf  阅读(6041)  评论(0编辑  收藏  举报