首页 > 编程语言 >JAVA开发 选择多个文件,系统运行后自动生成ZIP压缩包

JAVA开发 选择多个文件,系统运行后自动生成ZIP压缩包

时间:2024-06-16 21:31:02浏览次数:13  
标签:JAVA String ZIP java fileChooser import new 压缩包

选择多个文件,系统运行后自动生成ZIP压缩包

实现方法

案例简述:通过启动java代码来打开文件选择器对话框,用户选择确认需要进行压缩的文件,可一次性选择多个文件,选择完毕后点击按钮确认,指定位置自动生成压缩包。

1.1 代码块

import javax.imageio.stream.FileImageInputStream;
import javax.swing.*;
import java.io.*;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.zip.ZipOutputStream;
import java.util.zip.ZipEntry;

public class FileZipper {

    //生成文件名
    public static String GenerateFileName(String filePath,String suffix){
        String filename;
        Date date = new Date();
        SimpleDateFormat dsf = new SimpleDateFormat("yyyyMMddHHss");
        filename = filePath + dsf.format(date) + " temp" +suffix;
        return filename;
    }


    //选择多个文件,生成压缩包
    public static void FileZipperByMulties() throws FileNotFoundException {
        String filePath = "D:\\JAVAFILE\\attachments\\rars\\";
        JFileChooser fileChooser = new JFileChooser("C:\\Users\\ASUS-PC\\Desktop\\csdn");
        fileChooser.setMultiSelectionEnabled(true);
        fileChooser.setDialogTitle("请选择要压缩的文件(可选择多个)");
        fileChooser.setApproveButtonText("确定");

        int value = fileChooser.showOpenDialog(null);
        if(value != JFileChooser.APPROVE_OPTION){
            return;
        }

        File outZipFile = new File(GenerateFileName(filePath,".zip"));
        File[] files = fileChooser.getSelectedFiles();
        try(ZipOutputStream zipOutputStream = new ZipOutputStream(new FileOutputStream(outZipFile))){
            for(File file:files){
                ZipEntry zipEntry = new ZipEntry(file.getName());
                zipOutputStream.putNextEntry(zipEntry);
                try(FileImageInputStream fileImageInputStream = new FileImageInputStream(file)) {
                    byte[] bytes = new byte[1024];
                    int length;
                    while((length = fileImageInputStream.read(bytes))>0){
                        zipOutputStream.write(bytes,0,length);
                    }
                }
            }
            zipOutputStream.closeEntry();

        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }


    public static void main(String[] args) {
        try{
            FileZipperByMulties();
            System.out.println("File compressed successfully!");
        } catch (FileNotFoundException e) {
            throw new RuntimeException(e);
        }
    }
}

1.2 运行结果截取

  1. 文件选择器对话框选择多个文件
    在这里插入图片描述
  2. 控制台输出,表示执行正确
    在这里插入图片描述
  3. 压缩包信息
    在这里插入图片描述
    在这里插入图片描述

相关知识

JAVA开发 选择指定的文件生成ZIP压缩包

标签:JAVA,String,ZIP,java,fileChooser,import,new,压缩包
From: https://blog.csdn.net/a_waste_only/article/details/139726610

相关文章

  • Java编程:动态规划
    背包问题:有一个背包,容量为4磅,现有如下物品要求达到的目标为装入的背包的总价值最大,并且重量不超出要求装入的物品不能重复动态规划算法介绍===================================================================动态规划(DynamicProgramming)算法的核心思想是......
  • 2024年Java后端开发学习路线(建议收藏!)
    第二部分:Java高级在Java高级中,我们应该要熟练掌握。Java多线程/高并发,数据结构和算法,设计模式和JVM。第三部分:JavaWEB学习JavaWeb也就算正式开始了Java项目的开发,在这个阶段需要掌握Tomcat服务器的搭建,数据的传输。第四部分:主流框架和项目管理在这个阶段,我们需要......
  • java学习03
    类型转换强制类型转换自动类型转化自动类型转换会从低到高转换类型转换注意点1、不能进行布尔类型的转换2、转化时会有精度和溢出的问题变量java变量类型名称值typevarName[=value]局部变量在方法里面实例变量在方法外在类里面类变量带static时可直接在方法里使......
  • 【JavaScript脚本宇宙】提升Markdown工作流:不可错过的六个JavaScript库
    优化你的Markdown体验:六大JavaScript库一网打尽前言在现代Web开发中,Markdown作为一种轻量级的标记语言,凭借其简洁易读的语法和广泛的适用性,迅速成为开发者们的宠儿。为了更有效地解析和处理Markdown内容,JavaScript社区涌现了许多功能强大的库。这些库不仅能够高效地将Mark......
  • 【JavaEE精炼宝库】多线程(6)线程池
    目录一、线程池的概念及优势1.1线程池的概念:1.2线程池的优势:二、工厂模式三、标准库中的线程池3.1标准库线程池参数解释:3.1.1corePoolSize|maximumPoolSize:3.1.2keepAliveTime|unit:3.1.3workQueue: 3.1.4ThreadFactory: 3.1.5handler:3.2创建线程池演......
  • cjavapy编程书籍推荐
    cjavapy编程书店主要是收集了C/C++/C#、Java、Python等语言编程基础教程书籍,以及高级进阶教程书籍,还有其它编程相关的Linux、机器学习、编程提高及面试提高方面的书籍。1、cjavapy编程书店简介cjavapy编程书店主要收录编程相关的经典书籍,书籍的购买方式都是在抖音橱窗,书店只......
  • JAVA 实用类
    1.什么是枚举类?访问修饰符Enum枚举名称{}其应用上可以看做一个类去定义,如果枚举里有方法,定义的枚举常量要以':'结尾2.应用枚举的好处?枚举限制了范围,更加安全,如果要大量定义常量用publicfinalstaticA=1;定义起来太复杂,用枚举简单多,代码简洁publicvoidday(Day(枚举类型)......
  • 第01章:随堂复习与企业真题(Java语言概述)
    第01章:随堂复习与企业真题(Java语言概述)一、随堂复习1.Java基础全程的学习内容第1阶段:Java基本语法>Java概述、关键字、标识符、变量、运算符、流程控制(条件判断、选择结构、循环结构)、IDEA、数组第2阶段:Java面向对象编程>类及类的内部成员>面向对象的三大特征......
  • 【JavaWeb】SpringBoot基础
    SpringBootWeb入门HTTP协议Web服务器-Tomcat前言Spring的官网(https://spring.io)。Spring的官方提供很多开源的项目,我们可以点击上面的projects,看到spring家族旗下的项目。Spring发展到今天已经形成了一种开发生态圈,Spring提供了若干个子项目,每个项目用于完成特定......
  • C#.NET与JAVA互通之DES加密V2024
    C#.NET与JAVA互通之DES加密V2024 配置视频:  环境:.NETFramework4.6控制台程序JAVA这边:JDK8(1.8)控制台程序 注意点:1.由于密钥、明文、密文的输入输出参数,都是byte数组(byte[]),所以:字符串转byte数组(byte[])环节,双方要约定好编码。2.KEY和IV从字符串转byte数......