网站首页 > 精选教程 正文
Java文件压缩的处理方式——项目开发实战篇
一、 概述:
以Java项目开发实战的角度对文件压缩与解压缩技术进行分析,从应用场景、实战场景和案例分析等方面逐步展开说明。需要注意的是自媒体、流媒体或视频类门户网站对该技术的关注点在于压缩率、压缩和解压缩速度、算法迭代和优化等等方面;一般大中型企业数据管理平台的关注点则是压缩文件格式与平台系统环境的匹配度,即使用系统默认的压缩文件格式,无需单独安装压缩工具。因为不同的系统对于软件的安装要求不一致,导致部分软件不能正常安装。例如:Solaris和UNIX早期版本,还包括32位和64位系统的差异。
本文以压缩文件格式的视角逐步展开说明,避开那些专业度较高的层面,可以达到快速入门和理解的目的。后期会单独针对各种不同实现技术的性能进行分析说明。
二、 项目中的应用场景:
1、 附件文件批量下载并压缩;
2、 日志文件压缩;
3、 厂商接口数据文件压缩与解压缩;
4、 经FTP方式传递的各种文件;
三、 项目中的缺省情况处理:
1、 压缩文件时未设置新生成文件的路径:
a) 压缩单个文件使用文件名称进行命名(去除文件格式后缀的纯文件名称);
b) 压缩多个文件:属于同一个文件夹使用文件夹名称进行命名,否则使用第一个文件的名称或父文件夹名称进行命名;
c) 压缩文件夹时与文件处理一致;
2、 解压缩文件时未设置输出文件的路径:
a) 在解压缩文件同级直接解压缩;
b) 在解压缩文件同级生成同名文件夹后,在进行解压缩;
四、 项目中常用的压缩格式:
1、 zip;
2、 rar;
3、 tar;
4、 tar.gz;
5、 7z;
五、 项目中常用的压缩技术:
1、 zip:
a) JDK自带API:
自带的java.util.zip.ZipEntry(路径中带有中文的情况不能解析);
b) 示例代码:
c) ant.jar:
org.apache.tools.zip.ZipEntry可以有效的解决中文路径乱码问题,通过org.apache.tools.zip.提供的setEncoding( encoding)方法进行字符编码设置。
d) 示例代码:
2、 rar:
a) 说明:
java-unrar-0.3.jar中的de.innosystec.unrar.Archive;
由于RAR未开放压缩算法,因此只能通过Java代码进行解压缩操作。
b) 示例代码:
3、 tar:
a) 说明:
commons-compress.jar中的org.apache.commons.compress.archivers.tar.TarArchiveEntry;
在使用TarArchiveEntry对象调用setName( name)方法时,先将文件名称进行编码格式转换处理。
b) 示例代码:
4、 tar.gz:
a) 说明:
commons-compress.jar中的org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream和org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
只能针对TAR文件进行再次压缩。
b) 示例代码:
5、 7z:
a) 说明:
commons-compress.jar中的org.apache.commons.compress.archivers.sevenz.SevenZArchiveEntry;
在使用SevenZOutputFile对象调用createArchiveEntry( inputFile, entryName)方法时,先将文件名称进行编码格式转换处理。
b) 示例代码:
六、 案例分析:
1、 类图:
2、 Spring配置:
3、 说明:
使用接口将对象整合,以便在注入时可以使用同一个对象实例化。
4、 优化:
a) 优化思路:
根据实际调用频率,可以通过单例模式的方法优化对象实例化过程。
b) 具体操作:
i. 增加将类对象定义为该类的私有静态成员变量;
ii. 增加getInstance方法进行实例化操作;
iii. 增加closed方法进行对象置空操作;
iv. 修改Spring配置;
c) 示例代码:
- 上一篇: java,多文件打包下载 java软件打包
- 下一篇: 陪你一起学kafka(十)——消息压缩
猜你喜欢
- 2024-11-10 每日分享- jvm 如何压缩 java 项目的可执行文件
- 2024-11-10 15个最好用的JavaScript代码压缩工具
- 2024-11-10 Redis 6.2配置文件全解析:轻松优化缓存性能!
- 2024-11-10 Linux中常用的打包,压缩,解压 tar指令 zip指令
- 2024-11-10 Go发起HTTP2.0请求流程分析(后篇)——标头压缩
- 2024-11-10 hash碰撞的概率和可能性比你直觉中大得多
- 2024-11-10 2020上半年Java面试题总结,20多类1100道面试题...
- 2024-11-10 Facebook 发布最新数据压缩技术:可将 Android App 大小减少 20%
- 2024-11-10 一个简单的字符串,为什么 Redis 要设计的如此特别
- 2024-11-10 Android如何进行资源压缩 android资源文件路径
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)