首页 > 编程语言 >Java压缩文件为ZIP并加密

Java压缩文件为ZIP并加密

时间:2024-02-04 13:23:39浏览次数:20  
标签:加密 ZIP 压缩文件 Java import net zip4j lingala

1:引入jar包

   <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>1.3.1</version>
    </dependency>

 

2:单文件压缩

 
import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.EncryptionMethod;

import java.io.File;

public class FileEncryptionExample {

    public static void main(String[] args) {
        // 1. 定义源文件路径、目标ZIP文件路径和密码
        String sourceFilePath = "path/to/source/file"; // 要加密的源文件路径
        String destinationFilePath = "path/to/encrypted/file.zip"; // 加密后的ZIP文件保存路径
        String password = "myPassword"; // 用于加密ZIP文件的密码

        try {
            // 2. 创建一个 ZipFile 对象并设置密码
            ZipFile zipFile = new ZipFile(destinationFilePath);
            zipFile.setPassword(password);

            // 3. 创建一个 ZipParameters 对象并设置加密方法
            ZipParameters params = new ZipParameters();
            params.setEncryptionMethod(EncryptionMethod.AES);

            // 4. 将源文件添加到 ZIP 文件中,同时应用加密参数
            zipFile.addFile(new File(sourceFilePath), params);

            System.out.println("File encrypted successfully");
        } catch (ZipException e) {
            e.printStackTrace();
        }
    }
}

3.多个文件压缩到一个压缩包里面并加密

import net.lingala.zip4j.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.model.enums.EncryptionMethod;

import java.io.File;
import java.util.ArrayList;

public class MultipleFilesEncryptionExample {

    public static void main(String[] args) {
        // 1. 定义源文件列表、目标ZIP文件路径和密码
        ArrayList<String> sourceFilePaths = new ArrayList<>();
        sourceFilePaths.add("path/to/source/file1"); // 第一个要加密的源文件路径
        sourceFilePaths.add("path/to/source/file2"); // 第二个要加密的源文件路径
        String destinationFilePath = "path/to/encrypted/multiple_files.zip"; // 加密后的ZIP文件保存路径
        String password = "myPassword"; // 用于加密ZIP文件的密码

        try {
            // 2. 创建一个 ZipFile 对象并设置密码
            ZipFile zipFile = new ZipFile(destinationFilePath);
            zipFile.setPassword(password);

            // 3. 创建一个 ZipParameters 对象并设置加密方法
            ZipParameters params = new ZipParameters();
            params.setEncryptionMethod(EncryptionMethod.AES);

            // 4. 循环遍历源文件列表,将每个文件添加到 ZIP 文件中,同时应用加密参数
            for (String sourceFilePath : sourceFilePaths) {
                File sourceFile = new File(sourceFilePath);
                zipFile.addFile(sourceFile, params);
            }

            System.out.println("Files encrypted and compressed successfully");
        } catch (ZipException e) {
            e.printStackTrace();
        }
    }
}

 

 4.感谢 原文作者:小小小小真 原文链接:https://blog.csdn.net/a1150499208/article/details/132764591?spm=1001.2014.3001.5502

标签:加密,ZIP,压缩文件,Java,import,net,zip4j,lingala
From: https://www.cnblogs.com/ihuqi/p/18006017

相关文章

  • javaee平台技术
    3.spring和springboot3.3spring容器BeanFactory:创建Bean对象以及管理Bean对象。 ApplicationContext:BeanFactory的子接口,继承了其所有能力外,还追加了其他功能。  控制反转实现机制:将对象间的依赖交给容器去处理,利用set或构造函数的方法把依赖注射进来,告诉其关联关系,主......
  • 几个高级 JavaScript 技巧
    赋值解构:赋值解构是一种从数组或对象中提取值并将其分配给变量的简洁方法。它简化了代码并提高了可读性。对于数组,您可以使用方括号表示法,对于对象可以使用大括号。扩展语法:可以使用扩展语法将数组的元素或对象的属性扩展到另一个数组或对象。这对于制作副本、合并对象以及将多个......
  • java直连mysql操作数据
    连接器importjava.sql.Connection;importjava.sql.DriverManager;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.SQLException;/***@author:chenKeFeng*@date:2024/1/3010:21*/publicclassMySQLConnector{pri......
  • JAVA Spring Boot快速开始
    实践环境SpringBoot3.2.1Maven3.8.8JDK1.8.0_331创建项目通过http://start.spring.io/网站创建包含SpringBoot的项目,具体如下:点击GENERATE按钮后,会自动生成并下载SpringBootQuickStartDemo.zip导入项目解压述下载的项目压缩包,解压后的项目文件结构如下:E:codeProjects\Sprin......
  • iText PDF Java API 入门介绍教程
    ​ iText是一个非常强大的Java库,用于创建和操作PDF文档。可以在Java应用程序中生成PDF文档,包括文本、表格、图像等丰富的内容。iText具有强大的功能,如PDF/A、数字签名、加密等,适用于复杂的PDF处理需求。iText是一个非常灵活和强大的库,可以根据具体需求进行大量的定制和扩展。......
  • Java浅谈BufferedReader
    既然Scanner简单好用,为什么要用BufferedReader呢?主要原因是面对大量的读入显得较慢且不安全,这里体现在三个方面,一方面是解析的问题,好用意味着封装的更复杂,一拖n的接口解析起来会慢;另一方面是缓冲区的问题,Scanner缓冲区小1024B,直面物理介质的机会更大,众所周知,IO时间在大数据面前......
  • java面向对象基础语法之成员变量和局部变量的区别(详细)
    一:概述在面向对象一开始的学习中,对一些其中基础语法的了解和熟悉非常的重要,有助于更深入的去学习面向对象的知识。在这里具体的说明一下成员变量和局部变量的区别。二:具体说明<1>java中变量的分类<2>成员变量和局部变量的定义说明。成员变量:成员变量分为静态变量(类变量)和实例变量......
  • 【Java基础】BlockingQueue及其子类
    ArrayBlockingQueue(数组实现的有界阻塞队列)特点:基于数组的有界阻塞队列,按先进先出(FIFO)原则排序元素。可以选择公平性(即按线程等待的先后顺序访问队列)或非公平性,默认是非公平的。用途:适用于需要固定大小的队列场景。LinkedBlockingQueue(链表实现的阻塞队列)特点:基于链表的可选边界(有......
  • 地铁最优线路算法的求解(三)-深度优先搜索java实现
    多的不说,showmethecode,先上一段java代码1/*2*深度优先算法(DFS)算法生成所有可能路径3*startId:出发站4*endId:到达站5*graph:辅助邻接矩阵,若99站与35站相邻,6*则graph[35][99]=1,graph[99][35]=17*8*......
  • Java套接字编程学习
    一、前言Java套接字编程用于不同JRE上运行的应用程序之间进行通信,可以是面向连接或无连接的。Socket类和ServerSocket类用于面向连接的套接字编程,DatagramSocket类和DatagramPacket类用于无连接的套接字编程。我们需要根据服务器IP地址和端口号来区分套接字。Socket类用于客户端和......