分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

最近公司准备让各项目组提供公共工具组件,手中正好无事便研究其中一个工具 - 文件压缩与解压缩工具。

目前JAVA API已提供对于ZIP文件的压缩与解压缩,但网上总结不支持ZIP文件加密与解密甚至对于中文支持也有问题,于是果断找其他的支持加密解密的第三方包。 winzipaes 与 ZIP4J 都符合项目的要求 ,最终选择ZIP4J来进行使用。

  • ZIP4J 是一个支持处理ZIP文件的开源库
  • 支持创建,修改,添加,删除,解压 压缩文件
  • 支持读/写密码保护
  • 支持AES加密 128/256
  • 支持标准ZIP加密
  • 支持进度监视器
  • 自持Unicode 文件名
  • 支持创建分卷压缩文件
  • 支持将文件添加到压缩包中但不进行压缩

ZIP4J 项目地址为  :http://www.lingala.net/zip4j/ ,但该地址无法直接访问需要使用代理进行访问

再提供一个在线代理网站:http://www.7daili.com/

目前ZIP4J 版本为:1.3.1 ,只需要直接下一载一个zip4j_1.3.1.jar一个jar包即可,同时可以下载官网提供的例子进行学习,例子相当详细(官网提供的例子的jdk 为1.4的版本 导入后需要修改一下)

官网提供的例子程序比较简单与小巧 整个程序也就一百多k,但demo程序对于各种功能的使用讲的非常详细。

项目包结构分为三层:

  • ZIP:该包下主要讲述压缩包的新增,修改,删除等例子(包含加密文件创建,通过流的方式创建 、添加压缩文件 、创建分卷压缩文件);
  • MISC:该包下主要展示几个工具方法例子,如:是否是分卷压缩包的判断、获取压缩包中的文件信息(文件名 大小等信息)、压缩进度查看、根据文件名删除压缩包对应文件等;
  • EXTRACT:该包下例子都是关于解压压缩包的例子,包括解压加密文件等;

示例代码

示例代码中需要对文件进行操作,为方便程序运行创建以下三个文件 可以直接运行大多数代码

  1. sample.txt
  2. myvideo.avi
  3. mysong.mp3

示例1 创建压缩包添 加文件到压缩包中(未设置加密)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class AddFilesDeflateComp {
      
    publicAddFilesDeflateComp() {
        try{
              
            ZipFile zipFile =new ZipFile("c:\\ZipTest\\AddFilesDeflateComp.zip");
              
            ArrayList<File> filesToAdd =new ArrayList<File>();
            filesToAdd.add(newFile("c:\\ZipTest\\sample.txt"));
            filesToAdd.add(newFile("c:\\ZipTest\\myvideo.avi"));
            filesToAdd.add(newFile("c:\\ZipTest\\mysong.mp3"));
              
            ZipParameters parameters =new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);// set compression method to deflate compression            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 
            zipFile.addFiles(filesToAdd, parameters);
              
        }catch (ZipException e) {
            e.printStackTrace();
        }   
    }
      
    /**
     * @param args
     */
    publicstatic void main(String[] args) {
        newAddFilesDeflateComp();
    }
  
}

  • 该类主要用于创建普通压缩包。如果压缩包不存在 则会自动创建一个ZIP包;如果已经存在一个不为空的同名ZIP压缩包 会将内容添加到该同名压缩包中。
  • 如果手动创建一个格式为ZIP的空压缩包进行保存,则为抛出异常:ZipException :Negative seek offset
  • 如果将其他的文件后缀修改为ZIP包再运行程序,也会抛出异常:ZipException: zip headers not found. probably not a zip file
  • ZIP4J 提供ZipParameters对象来进行压缩参数设置,其中setCompressionMethod方法可以设置压缩还是 不压缩

示例2 创建压缩包添加文件到 指定目录中进行压缩

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class AddFilesToFolderInZip {
  
    publicAddFilesToFolderInZip() {
        try{
            ZipFile zipFile =new ZipFile("c:\\ZipTest\\AddFilesDeflateComp.zip");
            ArrayList<File> filesToAdd =new ArrayList<File>();
            filesToAdd.add(newFile("c:\\ZipTest\\sample.txt"));
            filesToAdd.add(newFile("c:\\ZipTest\\myvideo.avi"));
            filesToAdd.add(newFile("c:\\ZipTest\\mysong.mp3"));
              
            ZipParameters parameters =new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
              
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
            parameters.setRootFolderInZip("test2/");
              
  
            zipFile.addFiles(filesToAdd, parameters);
        }catch (ZipException e) {
            e.printStackTrace();
        
          
          
    }
      
    /**
     * @param args
     */
    publicstatic void main(String[] args) {
        newAddFilesToFolderInZip();
    }
  
}

  • 该程序执行后,会将sample.txt、myvideo.avi、mysong.mp3 添加到test2文件夹中 并生成AddFilesDeflateComp.zip 压缩包
  • 如果已经存在AddFilesDeflateComp.zip,则会将需要打包的内容添加到已经存在的压缩包去

示例3 添加文件夹到压缩包中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class AddFolder {
      
    publicAddFolder() {
          
        try{
              
            ZipFile zipFile =new ZipFile("c:\\ZipTest\\AddFolder.zip");
            String folderToAdd ="c:\\FolderToAdd";
          
            ZipParameters parameters =new ZipParameters();
              
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
            zipFile.addFolder(folderToAdd, parameters);
              
        }catch (ZipException e) {
            e.printStackTrace();
        }
    }
      
    publicstatic void main(String[] args) {
        newAddFolder();
    }
      
}

  • 需要添加的文件夹必须存在,否则抛出异常:ZipException: input folder does not exist
  • * 如果已经存在同名文件则会出现一个文件的时候会出现一个问题,程序会生成一个临时包并去修改之前存在的同名压缩文件,最后修改不成功且会抛出异常:ZipException: cannot rename modified zip file最后只留下一个临时包, 建议在生成的时候添加判断 避免出现这种错误

示例4 创建加密压缩包

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class AddFilesWithAESEncryption {
      
    publicAddFilesWithAESEncryption() {
          
        try{
            ZipFile zipFile =new ZipFile("c:\\ZipTest\\AddFilesWithAESZipEncryption.zip");
  
            ArrayList<File> filesToAdd =new ArrayList<File>();
            filesToAdd.add(newFile("c:\\ZipTest\\sample.txt"));
            filesToAdd.add(newFile("c:\\ZipTest\\myvideo.avi"));
            filesToAdd.add(newFile("c:\\ZipTest\\mysong.mp3"));
              
            ZipParameters parameters =new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
              
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 
            parameters.setEncryptFiles(true);
              
            parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
              
  
            parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
            parameters.setPassword("123");
      
            zipFile.addFiles(filesToAdd, parameters);
        }catch (ZipException e) {
            e.printStackTrace();
        }
    }
      
    publicstatic void main(String[] args) {
        newAddFilesWithAESEncryption();
    }
      
}

加密压缩包后打开时需要输入密码,与rar相同:

示例5 创建分卷压缩包

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
public class CreateSplitZipFile {
      
    publicCreateSplitZipFile() {
          
        try{
          
            ZipFile zipFile =new ZipFile("c:\\ZipTest\\CreateSplitZipFile.zip");
              
  
            ArrayList<File> filesToAdd =new ArrayList<File>();
            filesToAdd.add(newFile("c:\\ZipTest\\sample.txt"));
            filesToAdd.add(newFile("c:\\ZipTest\\myvideo.avi"));
            filesToAdd.add(newFile("c:\\ZipTest\\mysong.mp3"));
              
            ZipParameters parameters =new ZipParameters();
            parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
              
            parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
              
            zipFile.createZipFile(filesToAdd, parameters,true, 65536);
        }catch (ZipException e) {
            e.printStackTrace();
        }
    }
      
    /**
     * @param args
     */
    publicstatic void main(String[] args) {
        newCreateSplitZipFile();
    }
  
}

  • 执行程序后会根据设置大小生成多个  压缩包名.z + 数量编号文件,如下图:
  • 如果已经存在同名压缩包,则会抛出异常提示已经存在:ZipException: zip file: c:\ZipTest\CreateSplitZipFile.zip already exists. To add files to existing zip file use addFile method
  • 需要进行分卷压缩的大小,不能小于规定的65536 bytes

示例6 通过流的方式添加文件到压缩包中

?
1
2
3
4
5
6
7
8
9
10
11
12

java解压缩/压缩/加密压缩/加密解压缩 ZIP4J ZIP文件压缩与解压缩学习相关推荐

  1. ZIP文件压缩与解压缩

    ZIP4J解压优点 ZIP4J 是一个支持处理ZIP文件的开源库 支持创建,修改,添加,删除,解压 压缩文件 支持读/写密码保护 支持AES加密 128/256 支持标准ZIP加密 支持进度监视器 自 ...

  2. java 操作Zip文件(压缩、解压、加密)

    java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...

  3. java Zip文件压缩含加密

    以下是对文件压缩的方法,这里只是单个文件压缩,多个变通一下就可以. 首先下载一个jar包:zip4j-1.3.2.jar /*** 对压缩文件进行加密*/public void ZipFileAndE ...

  4. 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  5. cordova 安卓文件多选_安卓zip文件压缩RAR解压软件下载-安卓zip文件压缩RAR解压下载v3.0.4安卓版...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  6. iOS Zip文件压缩

    iOS Zip文件压缩 //文件做压缩 拿到准备压缩的文件路径 拼装到数组中 使用的压缩类库 SSZipArchive//压缩文件路径 NSString *zippedPath; NSArray *p ...

  7. Java在不解压的前提下处理ZIP文件

    Java在不解压的前提下处理ZIP文件 在不解压zip的情况下,通过Zip4J工具包,直接以InputStream的形式,读取里面文件 JDK已经内置了ZipInputStream 能够完成该工作,但 ...

  8. 利用Java进行zip文件压缩与解压缩

    可能存在的业务情况: 1.用户上传了压缩包,需校验压缩包中的文件是否合格. 2.用户上传压缩包,对压缩包中的文件进行批量水印处理 解决思路: 1.读取原压缩包文件,解压缩至临时目录 2.对临时目录中的 ...

  9. python解压加密zip文件_Python:解压缩前检测一个zip文件否为加密,两种算法。

    前一篇文章介绍了如何用python自动解压缩加密的zip文件, 但是有一个问题,在服务器端脚本在解加密zip文件之前,需要检测其是否是加密文件,若是,则询问密码,结合密码解压缩:如果不是,则则直接解压 ...

  10. [Android开发]zip文件压缩解压缩

    //----------------- DirTraversal.java  package com.once; import java.io.File;  import java.util.Arra ...

最新文章

  1. 调试异常 Free Heap block xxxxxxxx modified at xxxxxxxx after it was freed
  2. 改变跳转页面 英文_如何高效阅读英文文献?你可以试试它 | 知云文献翻译
  3. 全国职业院校技能大赛软件测试题目,我校喜获2018全国职业院校技能大赛“软件测试”赛项一等奖...
  4. JS中创建函数的几种方式
  5. PyTorch官方权威教程书来了,LeCun力荐!意外的通俗易懂
  6. 设计php框架_PHP微型框架设计
  7. 寻求web和数据库开发的小哥哥
  8. Linux中的atim、mtime、ctime
  9. PostgreSQL ALTER TABLE 命令
  10. AI上推荐 之 FM和FFM(九九归一)
  11. listview 分页加载
  12. 解决win 7拷贝共享文件很慢
  13. life: zz 关于爱情
  14. python伪原创工具开发_在线伪原创工具www.bolewei.com的开发过程
  15. vue循环后不能下滑_Vue 循环后的数据更改无法响应。
  16. Zeromq 学习笔记1
  17. java编程思想----8,对象的容纳
  18. 产品开发中如何衡量产品价值,来做优先级排序?
  19. jpush推送格式 swift_swift 极光推送
  20. SM3密码算法 - Python实现

热门文章

  1. 网络的层级及各层级的作用
  2. linux下运行testng,TestNG执行程序
  3. SharedPreferences in credential encrypted storage are not available until after user is unlocked
  4. 上位机开发之三菱Q系列PLC通信实践
  5. 基于 FPGA 的数字表示
  6. 普及组noip2015年问题求解——重新排列1234和根节点数为2015的二叉树最多有__个叶子节点
  7. 找不到移动硬盘解决办法
  8. 常用复合逻辑运算,与非,或非,异或,同或
  9. verilog:part select
  10. PHP数据加密的几种方式