网站首页 > java教程 正文
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实现多张图片转换为视频
- 下一篇: 将20M文件从30秒压缩到1秒,我是如何做到的?
猜你喜欢
- 2024-11-18 一个小技巧,Maven 打 Jar 包体积缩小100倍
- 2024-11-18 两天两夜,1M图片优化到100kb
- 2024-11-18 Java 6 压缩字符串(Compressed String)
- 2024-11-18 Java 9 缩小字符串( Compact String)
- 2024-11-18 java实现对rar压缩包的解压
- 2024-11-18 看了就会:多线程下载图片并压缩,多线程下载能提高效率吗?
- 2024-11-18 Java 9 中的字符串(String)压缩的改进
- 2024-11-18 Java压缩算法性能比较
- 2024-11-18 Spire.PDF for Java 9.3.11 优化了压缩图片时内存的占用
- 2024-11-18 Java实现LWZ压缩算法
你 发表评论:
欢迎- 最近发表
-
- 搞趣网:我的世界全新皮肤包原始居民下载地址
- 我的世界拔刀剑MOD下载(我的世界拔刀剑mod下载国际版)
- 我的世界无正版账号的简单联机方法(非网易版,仅适用于局域网)
- 一些可以显著提高大型 Java 项目启动速度的尝试
- 常见的java敏感异常介绍(java 常见的异常)
- Java 开发者必看!三招实现外部 Jar 包动态加载(含热更新方案)
- Java JAR 启动内存参数配置指南:从基础设置到性能优化
- 对Spring MVC接口进行Mock测试(springmvc对外接口)
- 还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS
- 干掉OpenFeign,SpringBoot 3.0 自带的 HTTP 客户端真香!
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)