java中文件如何加密压缩?

目录

  • 文件加密压缩

    • 1.单个文件加密压缩
    • 2.多文件加密压缩

@(终于等到你)

文件加密压缩

在现如今已经可以实现大部分功能的互联网需求中,安全成为了需要的非必需品,工作需求中会遇到对导出的 excel 报表 做加密压缩的问题,今天有时间总结一下,我这里简单列举功能代码,连带其它代码文末会一并给出。

1.单个文件加密压缩

单个文件加密方法,需传输 3 个参数:被压缩源文件,压缩目标文件和加密密钥,如下

    /**
     * @Title: encrypt_zip
     * @Description:将指定路径下的文件压缩至指定zip文件,并以指定密码加密,若密码为空,则不进行加密保护
     * @param src_file 待压缩文件路径
     * @param dst_file zip路径+文件名
     * @param encode 加密密码
     * @return
     */
    public static void encrypt_zip(String src_file, String dst_file, String encode) {
        File file = new File(src_file);

        ZipParameters parameters = new ZipParameters();
        parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//压缩方式
        parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 压缩级别

        parameters.setEncryptFiles(true);
        parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);//加密方式
        parameters.setPassword(encode.toCharArray());//设置密码

        try {
            ZipFile zipFile = new ZipFile(dst_file);
            zipFile.setFileNameCharset("gbk");
            zipFile.addFile(file, parameters);

        } catch (ZipException e) {
            e.printStackTrace();
        }

    }

2.多文件加密压缩

多文件加密压缩和单文件类似,但是,这个方法包含上面的方法,甚至功能上可以替换上面方法,具体看下 code

    /**
     * @Title: zipFilesAndEncrypt
     * @Description: 将指定路径下的文件压缩至指定zip文件,并以指定密码加密,若密码为空,则不进行加密保护
     * @param srcFileName 待压缩文件路径 或 文件夹路径
     * @param zipFileName zip路径+文件名
     * @param password 加密密码
     * @return
     */
    public static void zipFilesAndEncrypt(String srcFileName,String zipFileName,String password){  

        if(StrTool.is_empty(srcFileName) || StrTool.is_empty(zipFileName)){
            System.out.println("请求的压缩路径或者文件名有误");
            return;
        }
        try {
            ZipParameters parameters = new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//压缩方式
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);//压缩级别
            if(!StrTool.is_empty(password)){
                parameters.setEncryptFiles(true);
                parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);//加密方式
                parameters.setPassword(password);
            }  

            ArrayList<File> filesToAdd=getFiles(srcFileName);

            ZipFile zipFile = new ZipFile(zipFileName);
            zipFile.setFileNameCharset("gbk");
            zipFile.addFiles(filesToAdd, parameters);
        } catch (ZipException e) {
            System.out.println("文件压缩出错");
            e.printStackTrace();
        }
    }

    //通过路径获取压缩文件集合
    private static ArrayList<File> getFiles(String srcFileName){
        ArrayList<File> filesToAdd = new ArrayList<File>();
        File file=new File(srcFileName);
        File[] files = new File[0];
        if(file.isDirectory()){
            files = file.listFiles();
            for(int i=0;i<files.length;i++){
                if(files[i].getName().endsWith(".xls")){//xls结尾的excel添加压缩集合
                    filesToAdd.add(new File(files[i].getPath()));
                    System.out.println("文件:"+files[i].getPath());
                }
            }
        } else {
            filesToAdd.add(new File(file.getPath()));
        }

        return filesToAdd;
    }

具体代码请到 github 自行下载

说在最后,如果有什么问题,请留言,我会尽量在第一时间给您答复

原文地址:https://www.cnblogs.com/charmsongo/p/9860615.html

时间: 2024-08-28 22:45:13

java中文件如何加密压缩?的相关文章

java中文件的读与写

最近一直在学习java中如何读取和写出文件,看了java API之后,发现在java.io中有很多关于文件读与写的类,下面就介绍几个经常用到的. 首先是:InputStream和OutputStream,API中说它俩是所有抽象类表示字节输入输出流的超类,所以在它们下面派生了很多子类.例如:FileInputStream和OutputStream等等.这些类都是以单字节的形式读入数据的,所以如果读入的数据中有中文字符,那么就会出现中文乱码现象. 其次是:Reader和Writer,这两个类是用于

java中文件的读写

Java中文件读写操作的作用是什么?回答这个问题时应该先想到的是Java只是一门语言,我们的一种使用工具而已,这样答案就明晰了,就是将外来的各种数据写入到某一个文件中去,用以保存下来:或者从文件中将其数据读取出来,供我们使用.就如下电影过程,从网络资源中下载一部电影保存于你电脑中(写文件),当你想看的时候就用播放器打开(读文件).Java中如何对文件进行读写操作?先理一理,Java中的流分两种,字节流和字符流,其中字节流的两个基类是InputStream和OutputStream;字符流的两个基

java中文件的I/O操作

java中文件的读写操作 (一) (1)java中文件的字节转成字符读操作 FileInputStream fStream = new FileInputStream("test.txt");//此时为字节流 byte[] b = new byte[31];//定义字节数组存储从文件夹中读取的数据,大小最多31字节 fStream.read(b);//将test.txt的数据读到b中 String line = new String(b,"UTF-8");//将字节

关于java中文件删除失败的原因分析

最近在做一个文档管理系统,结果在删除文件的时候,一直提示我文件删除失败,当然啦,是我在jsp里面写的一个alert("文件删除失败!"),然后我就纳闷儿了,为什么删不掉呢?后来打开windows,找到相应的文件,用管理员权限去删除也删不掉!然后就给我报错,java TM...正在使用这个文件,我顿时就凌乱了,因为我使用的是MyEcplise,所以我又回去检查代码,后来终于找到元凶了,是一个警告导致的错误!警告啊!下面我贴上代码: /** * 获取单个文件的大小 * @param fil

CompressUtils相关代码,java中文件压缩或解压已经文件的基本操作等方法

java中一些场合我们需要,对上传的压缩包中的内容进行处理,这个时候就用到了解压操作,还有压缩的操作等等,这里直接贴一下代码,以备今后自己可能会用到,还有共享给需要的小伙伴们. import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExceptio

java中常用的加密方式

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 -- ) http://secur

Java中常用的加密方法(JDK)

加密,是以某种特殊的算法改变原有的信息数据,使得未授权的用户即使获得了已加密的信息,但因不知解密的方法,仍然无法了解信息的内容.大体上分为双向加密和单向加密,而双向加密又分为对称加密和非对称加密(有些资料将加密直接分为对称加密和非对称加密). 双向加密大体意思就是明文加密后形成密文,可以通过算法还原成明文.而单向加密只是对信息进行了摘要计算,不能通过算法生成明文,单向加密从严格意思上说不能算是加密的一种,应该算是摘要算法吧.具体区分可以参考: (本人解释不清呢 …… ) http://secur

javaScript base64算法的实现 与 java中的base64 加密 解密

前段时间,工作需要,需要用js和java配套的base64算法,奈何没找到,然后网上抄一套.用起来还是很有效的. 闲言少絮,直接上干货. js 版base 64 算法  base64.js var keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; //将Ansi编码的字符串进行Base64编码 function encode64(input) { var output = &quo

java中文件操作《一》

在日常的开发中我们经常会碰到对文件的操作,在java中对文件的操作都在java.io包下,这个包下的类有File.inputStream.outputStream.FileInputStream.FileOutputStream.reader.writer.FileReader.FileWriter等等,其中对文件的操作又分为两大类,一类是字符流,一类是字节流.所谓的字符流是以字节(8b)为单位进行读/写,字符流即使用字符为单位读/写,java使用unicode编码,一个字符两个字节,下面分别对