Windows解压工具汇总

在工作时,总要用到一款解压工具。但是,这些去搜索的话,又有太多广告,还怕安装到带病毒或者没有用的软件,浪费时间。

接下来,我给大家推荐一下三款免费解压工具,它们的特点就是免费,绿色(没有广告)。

1.7zip(可能大部分用不习惯,因为使用的时候要点更多选项才能找到)

它的图标如下所示

优点就是:开源软件,没有收费选项。缺点就是只有Windows版本,不兼容MAC系统。

下载网址为:https://7-zip.org/

2.WinRAR(大部分习惯用的解压软件)

它的图标如下所示

下载网址为:WinRAR download free and support: WinRAR Download Latest Version (win-rar.com)

能够兼容Windows,MAC,Linux,Android版本

3.Bandzip(用的比较少,但是Mac系统的人用的比较多)

它的图标如下所示

下载网址为:https://www.bandisoft.com/bandizip/

优点就是:兼容Windows,mac系统

缺点就是:有收费项目的(专业版本)

  • 15
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件介绍: 解压后直接打开主程序WimTool.EXE即可使用,不需要安装。WimTool是一款WIM文件专用的处理工具,它有四部分功能:1.刷新列表:在表中加入其它工具挂载的映像,或移除其它工具卸载的映像,操作无需选项。2.挂载映像:必选项映像文件名、目标目录、映像号,可改写挂载是可选项。3.卸载映像:必选项是挂载的目标目录,无可选项,卸载可写方式挂载的映像时,WimTool会提示。4.解开映像:必选项与1的相同,无可选项。本工具能解开分割包文件,所有的分包文件必须位于同一目录,且名称要与规则匹配,不能挂载或卸载分包文件。新创建和追加功能:1.制作新的映像文件,必选项有要制作Wim映像的源目录和保存映像的文件名,可选项是压缩类型、映卷名称、映卷描述和启动标记。2.向映像中加入新映卷,必选项与第1部分相同,可选项是映卷名称、映卷描述和启动标记。分割和导入功能:1.分割文件,必选项有被分割的Wim文件和分割后保存的文件,没有可选项。2.导入映像,将Wim文件中存在的映像卷导入到另一Wim文件中,必选项有原文件名、原文件中的映像号和目标文件名。没有可选项。  分割Wim文件时,分包文件建议不要用数字作基本名。已分割的Wim文件不支持再被分割,也不支持向分割包文件导入映像卷。删除卷和信息:1、删除映像分卷   从含多个映卷的Wim文件中删除指定映像卷,必选项是Wim文件名和映像卷号,没有可选项。不支持删除分割包中的映像卷。删除Wim文件中的映像卷仅删除元数据及相关条目,并不能减小Wim文件的体积。2、修改映像信息   修改Wim文件中指定的映卷名称、映卷描述或加启动标记,必选项文件名和映像卷号,可选项是映卷名、卷描述和启动标记(叁者须选其一)。每个映像文件中只能有一个具有启动标记的卷。文件关联功能:1、取消文件关联   用于取消WIM映像文件与WimTool的文件关联设置。当系统中的WIM文件关联出现错误或异常时,可以先点[取消文件关联],再点[设置文件关联]来修复。2、设置文件关联   用于设置双击WIM文件时执行的操作,既可设置双击WIM文件按预设的参数来挂载映像文件,也可设置双击WIM文件打开WimTool窗口界面,再通过WimTool对该映像文件进行其它操作。3、保存挂载参数   用于保存双击WIM文件直接挂载映像的各项参数,默认的自动挂载基础目录为本程序下的 MountPath,默认的挂载卷号为1 ,默认的挂载方式为只读方式。保存挂载参数时将连同《文件关联设置》和第一页的〈双击文件卸载映像〉、〈双击路径打开目录〉两个选项一起保存。   不要将基础挂载目录设置在本程序所处的父目录,自动挂载参数有误(如试图挂载一个不存在的映卷)或挂载失败时WimTool会自动启动到图形窗口界面,用户可以在窗口程序中分析挂载失败的原因,也可以对选定映像进行其它操作。
可以使用Qt的zlib库来完成文件夹压缩成zip格式的功能。以下是一个简单的示例代码: ```cpp #include <QtCore> #include <zlib.h> void compressFile(const QString& filePath, z_stream& stream, QFile& outputFile) { QFile inputFile(filePath); if (!inputFile.open(QIODevice::ReadOnly)) { qWarning() << "Failed to open input file:" << filePath; return; } QByteArray inputBuffer; inputBuffer.resize(stream.avail_in); int flush = Z_NO_FLUSH; do { // 读取输入文件到输入缓冲区 int bytesRead = inputFile.read(inputBuffer.data(), inputBuffer.size()); if (bytesRead == -1) { qWarning() << "Failed to read input file:" << filePath; break; } // 将输入缓冲区中的数据压缩到输出缓冲区 stream.next_in = reinterpret_cast<Bytef*>(inputBuffer.data()); stream.avail_in = bytesRead; do { QByteArray outputBuffer; outputBuffer.resize(stream.avail_out); stream.next_out = reinterpret_cast<Bytef*>(outputBuffer.data()); stream.avail_out = outputBuffer.size(); int ret = deflate(&stream, flush); if (ret == Z_STREAM_ERROR) { qWarning() << "Failed to compress input file:" << filePath << "Error code:" << stream.msg; return; } // 将压缩后的数据写入输出文件中 int bytesWritten = outputFile.write(outputBuffer.data(), outputBuffer.size()); if (bytesWritten == -1) { qWarning() << "Failed to write output file:" << outputFile.fileName(); return; } } while (stream.avail_out == 0); } while (flush != Z_FINISH); inputFile.close(); } void compressFolder(const QString& folderPath, z_stream& stream, QFile& outputFile) { QDirIterator it(folderPath, QDir::AllEntries | QDir::NoDotAndDotDot, QDirIterator::Subdirectories); while (it.hasNext()) { QString filePath = it.next(); if (QFileInfo(filePath).isDir()) { continue; } QString relativeFilePath = QDir(folderPath).relativeFilePath(filePath); // 将文件名写入zip文件中 QByteArray fileNameData = relativeFilePath.toUtf8(); int fileNameLength = fileNameData.size(); outputFile.write(reinterpret_cast<const char*>(&fileNameLength), sizeof(fileNameLength)); outputFile.write(fileNameData); compressFile(filePath, stream, outputFile); } } void compressZip(const QString& sourcePath, const QString& targetPath) { QFile outputFile(targetPath); if (!outputFile.open(QIODevice::WriteOnly)) { qWarning() << "Failed to open output file:" << targetPath; return; } // 初始化zlib压缩上下文 z_stream stream; stream.zalloc = Z_NULL; stream.zfree = Z_NULL; stream.opaque = Z_NULL; if (deflateInit2(&stream, Z_DEFAULT_COMPRESSION, Z_DEFLATED, -MAX_WBITS, MAX_MEM_LEVEL, Z_DEFAULT_STRATEGY) != Z_OK) { qWarning() << "Failed to initialize zlib context."; outputFile.close(); return; } // 压缩文件夹 compressFolder(sourcePath, stream, outputFile); // 结束zlib压缩上下文 deflateEnd(&stream); outputFile.close(); } int main(int argc, char* argv[]) { QCoreApplication app(argc, argv); QString sourcePath = "C:/path/to/folder"; QString targetPath = "C:/path/to/archive.zip"; compressZip(sourcePath, targetPath); return app.exec(); } ``` 这个示例代码中,我们使用了Qt的QFile和QDirIterator类来遍历文件夹,使用zlib库来进行压缩,最终生成一个zip格式的压缩文件。在压缩文件时,我们先将文件名写入zip文件中,然后再将文件内容进行压缩。这样,在解压缩时,我们可以按照文件名逐个解压缩文件内容。需要注意的是,这个示例代码只适用于Windows平台上的解压工具,因为Windows平台上的解压工具对文件名编码方式的处理与其他平台上的解压工具有所不同。如果需要在其他平台上使用,可能需要进行一些调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值