文章目录
- (零)前言
- (一)【ZIP】格式
- (1.1)Python ⭐️
- (1.2)Java ⭐️
- (1.3)Golang ⭐️
- (1.4)Pascal
- (1.4.1)Lazarus(Free Pascal)
- (1.4.2)Delphi ⭐️
- (1.5)C++
- (二)【GZIP】格式
- (2.1)Python ⭐️
- (2.2)Java ⭐️
- (2.3)Golang ⭐️
- (2.4)Pascal
- (2.4.1)Lazarus(Free Pascal)
- (2.4.2)Delphi ⭐️
- (2.5)C++ ⭐️
- (三)【TAR】格式
- (3.1)Python ⭐️
- (3.2)Java ⭐️
- (3.3)Golang ⭐️
- (3.4)Pascal
- (3.4.1)Lazarus(Free Pascal)
- (3.4.2)Delphi ⭐️
- (四)【RAR】格式
- (4.1)Python
- (4.2)Java
- (4.3)Golang ⭐️
- (五)【7Zip】格式
- (5.1)Python ⭐️
- (5.2)Java ⭐️
- (5.3)Golang ⭐️
- (六)【Unix Z】格式
- (6.1)Python ⭐️
- (6.2)Java ⭐️
- (6.3)Golang ⭐️
(零)前言
通常的情况下遇到压缩包,都是解开后再进行文件操作。
比如把A.zip
解压缩成-> a.txt
,再用程序打开a.txt
正常读取。
上网查各种例子也是文件解开到文件。
很多年前我们也是这么干的,直到发现了这些情况:
- 似乎是4G时代吧,VoLTE的时代,各个厂商都用极其冗长的格式来存储并传输数据。
导致压缩比非常大比如大到100:1
。也就是1GB的压缩包,解开后是100GB的数据。
这些无谓的磁盘开销改为直接读取压缩包就可以完全避免。 - 服务器虚拟化后,有些磁盘读写(尤其是写)特别慢。
比如200MB的数据如果解压成4GB再进行处理,单个数据节点需要4小时,不解压只要2分钟左右。
时间的差距实在是巨大。
所以不得已,只能直接读写压缩文件了。
不能调用外部的命令,还得兼顾跨平台,各种语言实现的方式都不太一样。
能读通常就能写,加上读文本比读二进制块更“高级”,所以就用读文本做例子吧。
带有⭐️的例子,能够完成“直接读文本行”的功能,其它例子得自己改。
(一)【ZIP】格式
是Windows下最常见的格式。
单个压缩包内可以包含多个文件。
虽然压缩率不及RAR和7Z,读取速度不及GZIP,但是在Windows下兼容性是最好的。
常见的软件:WinZip。
(1.1)Python ⭐️
我完全不懂python,不过挺好用呢。
对zip的支持是自带的。
参考: