1. 程式人生 > >java中文件如何加密壓縮?

java中文件如何加密壓縮?

到你 toc sdi eth word getpath cat private 多文件

目錄

  • 文件加密壓縮
    • 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 自行下載

說在最後,如果有什麽問題,請留言,我會盡量在第一時間給您答復

java中文件如何加密壓縮?