java压缩文件,加密及不加密

首先是对文件的不加密压缩,采用org.apache.tools.zip.ZipEntry,Apache的压缩包压缩

ant包下载地址:http://pan.baidu.com/s/1gdgpioj

代码如下:

package com.zip;


import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;


import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;




public class zipDemo {
public static void main(String[] args) throws Exception {  
        
        /*  
         * 测试单个文件的ZIP压缩   
         * 指定文件路径可以是绝对路径,也可以是相对路径  
         */  
        String file = "E:/1.txt";  
        String zipFile1 = "E:/1.zip";  
        boolean flag1 = zipSingleFile(file, zipFile1);  
        System.out.println("\n**************压缩【单】个文件<author:pantp>******************************\n");  
        if (flag1) {  
            System.out.println("单个文件ZIP压缩成功,压缩后文件所在路径为:"+zipFile1);  
        } else {  
            System.out.println("单个文件ZIP压缩失败");  
        }  
        System.out.println("\n*******************************************************************************");  
          
        /*  
         * 测试多个文件的ZIP压缩  
         * 指定文件路径可以是绝对路径,也可以是相对路径  
         */  
/*        String files[] = { "src/zip/文件1.txt", "src/zip/file2.txt" };  
        String zipFile2 = "src/zip/多个文件压缩.zip";  
        boolean flag2 = zipFiles(files, zipFile2);  
        System.out.println("\n**************压缩【多】个文件<author:pantp>******************************\n");  
        if (flag2) {  
            System.out.println("多个文件ZIP压缩成功,压缩后文件所在路径为:"+zipFile2);  
        } else {  
            System.out.println("多个文件ZIP压缩失败");  
        }  
        System.out.println("\n*******************************************************************************");  
        */  
    }  
  
    /**  
     *<p>  
     *@param  file 待压缩文件的名称 例如,src/zip/文件1.txt  
     *@param  zipFile 压缩后文件的名称 例如,src/zip/单个文件压缩.zip  
     *@return boolean  
     *@throws :IOException  
     *@Function: zipSingleFile  
     *@Description:单个文件的压缩  
     *@version : v1.0.0  
     *@author: pantp  
     *@Date:May 24, 2012  
     *</p>  
     *Modification History:  
     * Date                     Author          Version         Description  
     * ---------------------------------------------------------------------  
     * May 24, 2012        pantp           v1.0.0           Create  
     */  
    public static boolean zipSingleFile(String file, String zipFile)  
            throws IOException {  
        boolean bf = true;  
        File f = new File(file);  
        if (!f.exists()) {  
            System.out.println("文件不存在");  
            bf = false;  
        } else {  
            File ff = new File(zipFile);  
            if (!f.exists()) {  
                ff.createNewFile();  
            }  
            // 创建文件输入流对象  
            FileInputStream in = new FileInputStream(file);  
            // 创建文件输出流对象  
            FileOutputStream out = new FileOutputStream(zipFile);  
            // 创建ZIP数据输出流对象  
            ZipOutputStream zipOut = new ZipOutputStream(out);  
            // 得到文件名称  
            String fileName = file.substring(file.lastIndexOf('/') + 1, file.length());  
            // 创建指向压缩原始文件的入口  
            ZipEntry entry = new ZipEntry(fileName);  
            zipOut.putNextEntry(entry);  
            // 向压缩文件中输出数据  
            int number = 0;  
            byte[] buffer = new byte[512];  
            while ((number = in.read(buffer)) != -1) {  
                zipOut.write(buffer, 0, number);  
            }  
            zipOut.close();  
            out.close();  
            in.close();  
        }  
        return bf;  
    }  
  
    /**  
     *<p>  
     *@param files    待压缩的文件列表 例如,src/zip/文件1.txt, src/zip/file2.txt  
     *@param zipfile 压缩后的文件名称 例如,src/zip/多个文件压缩.zip  
     *@return boolean  
     *@throws :Exception  
     *@Function: zipFiles  
     *@Description:多个文件的ZIP压缩  
     *@version : v1.0.0  
     *@author: pantp  
     *@Date:May 24, 2012  
     *</p>  
     *Modification History:  
     * Date                     Author          Version         Description  
     * ---------------------------------------------------------------------  
     * May 24, 2012        pantp           v1.0.0           Create  
     */  
    public static boolean zipFiles(String[] files, String zipfile)  
            throws Exception {  
        boolean bf = true;  
  
        // 根据文件路径构造一个文件实例  
        File ff = new File(zipfile);  
        // 判断目前文件是否存在,如果不存在,则新建一个  
        if (!ff.exists()) {  
            ff.createNewFile();  
        }  
        // 根据文件路径构造一个文件输出流  
        FileOutputStream out = new FileOutputStream(zipfile);  
        // 传入文件输出流对象,创建ZIP数据输出流对象  
        ZipOutputStream zipOut = new ZipOutputStream(out);  
  
        // 循环待压缩的文件列表  
        for (int i = 0; i < files.length; i++) {  
            File f = new File(files[i]);  
            if (!f.exists()) {  
                bf = false;  
            }  
            try {  
                // 创建文件输入流对象  
                FileInputStream in = new FileInputStream(files[i]);  
                // 得到当前文件的文件名称  
                String fileName = files[i].substring(  
                        files[i].lastIndexOf('/') + 1, files[i].length());  
                // 创建指向压缩原始文件的入口  
                ZipEntry entry = new ZipEntry(fileName);  
                zipOut.putNextEntry(entry);  
                // 向压缩文件中输出数据  
                int nNumber = 0;  
                byte[] buffer = new byte[512];  
                while ((nNumber = in.read(buffer)) != -1) {  
                    zipOut.write(buffer, 0, nNumber);  
                }  
                // 关闭创建的流对象  
                in.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
                bf = false;  
            }  
        }  
        zipOut.close();  
        out.close();  
        return bf;  
    }  
      
}  



测试效果:



**************压缩【单】个文件<author:pantp>******************************


单个文件ZIP压缩成功,压缩后文件所在路径为:E:/1.zip


*******************************************************************************


对文件加密的:

package com.unzip;

import java.io.File;

import com.unzip.file.FileUtils;
import com.unzip.util.extend.ZipOutput;

public class TestZip {
	public static void main(String[] args) {
		final String EncryptZipFile = "e:\\a_user.zip";
		final String password = "123456";
		final String zipDir = "e:\\a123.txt";
		System.out.println("===== 加密 =====");
		File file = new File(zipDir);
		byte[] zipByte = ZipOutput.getEncryptZipByte(file, password);
		FileUtils.writeByteFile(zipByte, new File(EncryptZipFile));
		System.out.println("===== Encrypt Success =====");
	}
}

测试效果:

===== 加密 =====
===== Encrypt Success =====




输入正确的加密密码才可以打开。

java加密源码下载地址:http://pan.baidu.com/s/1i3mqFPF

jar下载地址:http://pan.baidu.com/s/1i3FwVUP


Java文件压缩加密是一种将Java文件进行压缩加密保护的技术。通过对文件进行压缩,可以减小文件的体积,方便传输和存储。而通过加密文件,可以保护文件的内容,防止未经授权的人员获取和修改文件。 在Java中,可以使用压缩加密相关的类和方法来实现文件压缩加密操作。常用的压缩类有java.util.zip.ZipOutputStreamjava.util.zip.ZipInputStream,通过这些类可以将文件或文件夹压缩zip格式的压缩包,或者解压缩已有的压缩包。 对于文件加密,可以使用Java提供的加密算法和密码库来实现。常用的加密算法有对称加密算法和非对称加密算法。对称加密算法如AES和DES可以使用相同的密钥进行加密和解密,而非对称加密算法如RSA则需要一对公钥和私钥进行加密和解密。通过在程序中使用对应的算法和密钥,可以将文件内容加密后保存,只有使用正确的密钥才能解密文件内容。 在实现文件压缩加密时,可以先将文件进行压缩,然后再对压缩后的文件进行加密操作。这样可以同时达到减小文件体积和保护文件内容的目的。在传输或存储文件时,可以先解密再解压缩,得到原始的文件内容。 总之,Java文件压缩加密是一种通过压缩加密的方式保护文件内容的技术,通过使用Java提供的压缩加密类、算法和密码库,可以方便地实现文件的压缩加密操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值