【常用工具】7-Zip 解/压缩软件——基本使用方法

在实际日常工作或项目中,经常会遇到需要在window操作系统上压缩文件,在Linux操作系统上解压缩的场景,一款实用的压缩软件迫在眉睫,经过实际使用总结,7-Zip可以很好的解决很多压缩和解压缩问题,其基本使用方法总结如下:

参考来源—— 7-Zip 官方中文网站

https://sparanoid.com/lab/7z/

下载链接

https://sourceforge.net/p/sevenzip/discussion/45797/thread/3f550826d8/

一、7-Zip 介绍

7-Zip是一款 完全免费 而且 开源 的压缩软件,相比其他软件有更高的压缩比而且相对于WinRAR不会消耗大量资源。

优点:

开源免费,轻巧便携,高压缩比

压缩 / 解压缩:

7z、XZ、BZIP2、GZIP、TAR、ZIP 以及 WIM

仅解压缩:

AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VMDK、WIM、XAR 以及 Z

能够兼容任意压缩、转换、加密算法

最高支持 16,000,000,000 GB 的文件压缩

系统支持:

7-Zip 适用于 Windows 10 / 8 / 7 / Vista / XP / 2016 / 2012 / 2008 / 2003 / 2000 / NT

二、实际使用

1、压缩面板及说明

在这里插入图片描述

2、功能说明

压缩格式支持:

7z、bzip2、gzip、tar、wim、xz、zip

压缩等级:

0-仅存储1-极速压缩3-快速压缩5-标准压缩7-最大压缩9-极限压缩

压缩方法(算法):

Deflate、Deflate64、BZip2、LZMA、PPMd

字典大小:

字典大小设置主要和内存占用关系较大,对压缩比的影响非常小,字典越大压缩/解压缩时使用的内存和时间就越多

单词大小:

越大越有利于压缩比提高,但是相应的时间增加

固实数据大小:

固实数据就是将所有文件中相同的部分统一压缩,这样能使压缩后文件就变很小.

CPU线程数:

CPU线程数就是你压缩的时候同时用几个CPU核心,越多速度越快,会不会影响压缩效果没有经过大量测试

压缩所需内存

3、压缩算法说明

上述提到的几种常见的压缩算法,包括Deflate、BZip2、LZMA和PPMd。这些算法都用于数据压缩,但它们在实现方式、压缩率和速度上有所不同。下面是对这些算法的简要概述:

Deflate:

结合了LZ77(Lempel–Ziv 77)和哈夫曼编码。LZ77用于找到并替换重复的数据序列,而哈夫曼编码则用于进一步优化这些替换。
被广泛使用在许多软件和应用中,包括gzip、zlib和PNG图像格式。
是一种无损压缩算法,意味着压缩后的数据可以完全恢复到原始状态。

BZip2:

基于Burrows-Wheeler变换和哈夫曼编码。
通常比Deflate提供更好的压缩率,但压缩和解压速度较慢。
也是一种无损压缩算法。

LZMA:

是Lempel–Ziv–Markov chain Algorithm的缩写。
结合了LZ77算法和范围编码(一种熵编码技术)。
通常提供比Deflate和BZip2更高的压缩率,但压缩和解压速度可能更慢。
被用于7-Zip压缩工具等。
同样是无损压缩算法。

PPMd:

PPMd是Prediction by Partial Matching(部分匹配预测)的一种变体。
它是一种统计压缩方法,通过分析数据的统计特性来压缩数据。
WinRAR等压缩工具使用PPMd算法。
也是一种无损压缩算法。

在选择压缩算法时,需要考虑压缩率、压缩和解压速度以及内存使用等因素。不同的算法在不同的应用场景下可能更合适。例如,对于需要快速压缩和解压的数据,Deflate可能是一个更好的选择;而对于需要更高压缩率且对速度要求不高的场景,BZip2或LZMA可能更合适。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
7-zip 是一种高效的压缩算法,它能够提供比传统的 ZIP 压缩算法更高的压缩比率和更快的压缩速度。同时,它还支持多种压缩格式,包括 7z、ZIP、RAR、GZIP、TAR 等。 如果你想在 C 语言中使用 7-zip压缩算法,你可以使用 7-zip 的 C SDK。该 SDK 提供了一组 C 语言 API,可以让你在你的程序中使用 7-zip 的压缩和解压缩功能。 以下是使用 7-zip C SDK 进行压缩的基本步骤: 1. 包含 7-zip C SDK 的头文件。 ``` #include <7z.h> ``` 2. 定义一个结构体来存储压缩参数。 ``` CLzmaEncProps props; LzmaEncProps_Init(&props); props.level = 5; ``` 3. 打开要压缩的文件。 ``` HANDLE inFile = CreateFileA("input.txt", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); ``` 4. 创建一个输出文件。 ``` HANDLE outFile = CreateFileA("output.7z", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); ``` 5. 初始化 7-zip 压缩库。 ``` ISzAlloc alloc = { SzAlloc, SzFree }; CLzmaEncHandle enc; LzmaEnc_Construct(&enc); LzmaEnc_Alloc(&enc, 1024 * 1024, &alloc, &alloc); LzmaEnc_SetProps(&enc, &props); LzmaEnc_WriteProperties(&enc, outFile); ``` 6. 压缩文件。 ``` const int bufferSize = 64 * 1024; Byte inBuffer[bufferSize]; Byte outBuffer[bufferSize]; SZ_RESULT res = SZ_OK; UInt32 inSize = 0; UInt64 outSize = 0; for (;;) { DWORD bytesRead = 0; if (!ReadFile(inFile, inBuffer, bufferSize, &bytesRead, NULL)) { res = SZ_ERROR_READ; break; } if (bytesRead == 0) { break; } inSize += bytesRead; SRes res = LzmaEnc_Encode(&enc, outBuffer, &outSize, inBuffer, bytesRead, LZMA_FINISH_ANY); if (res != SZ_OK) { break; } DWORD bytesWritten = 0; if (!WriteFile(outFile, outBuffer, outSize, &bytesWritten, NULL)) { res = SZ_ERROR_WRITE; break; } } ``` 7. 关闭文件和 7-zip 压缩库。 ``` CloseHandle(inFile); CloseHandle(outFile); LzmaEnc_Destroy(&enc); ``` 这就是使用 7-zip C SDK 进行压缩的基本步骤。你可以根据你的具体需求进行调整和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沐风—云端行者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值