以压缩文件的形式,下载代码

本文详细介绍了使用Java进行ZIP文件压缩的方法,包括如何利用ZipOutputStream和ZipEntry类压缩单个文件,提供了完整的代码示例,并指出了后续计划实现的文件夹递归压缩功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1,前言

2,相关类

3,相关类或接口的继承与实现关系

4,源码如下

5,参考资料


 

1,前言

当前这个版本(2019年1月16日 00:17:43)现在只有单文件的压缩,待后续补充文件夹递归下载。

2,相关类

import java.util.zip.ZipEntry;//这个类用于表示一个压缩文件条目。
import java.util.zip.ZipOutputStream;//这个类实现了一个用于在压缩文件格式中写入文件的输出流过滤器。包括支持压缩和解压项。

相关说明,请参考jdk的文档

3,相关类或接口的继承与实现关系

ZipEntry 

ZipOutputStream

4,源码如下

package com.wayne.utils;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipUtils {
    private ZipUtils(){} // 隐藏构造函数,是个工具类

    /**
     * 压缩文件核心类
     * @param inFile 要压缩的文件
     * @param out   压缩文件的输出流
     * @param dir   压缩文件的输出路径
     * @throws IOException 抛出文件异常
     */
    public static void doZip(File inFile, ZipOutputStream out,String dir) throws IOException {
        String entryName = null;
        if(!StringUtils.equals("",dir)){
            entryName = dir + "/" + inFile.getName();
        } else {
            entryName = inFile.getName();
        }

        ZipEntry entry = new ZipEntry(entryName);
        out.putNextEntry(entry);

        int len = 0;
        byte[] buffer = new byte[1024];
        FileInputStream fis = new FileInputStream(inFile);
        while ((len = fis.read(buffer)) > 0) {
            out.write(buffer,0,len);
            out.flush();
        }
        out.closeEntry();
        out.close();
        fis.close();
    }

    public static void main(String[] args) throws Exception {
        String filePath = "G:\\tempFiles\\";
        String fileName = "GreetingController.java";
        String zipFileName = "GreetingController.zip";

        File file = new File(filePath + fileName);

        ZipOutputStream out = new ZipOutputStream(new FileOutputStream(filePath+zipFileName));

        ZipUtils.doZip(file,out,"");
    }
}

5,参考资料

 1)Java实现zip压缩多个文件下载

 2)jdk1.8 api(原版)

 3)jdk1.8 api (中文版)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值