C++生成压缩包,解压压缩包

C++⽣成压缩包,解压压缩包
版本
VS2013
⽅法1
调⽤第三⽅WinRAR软件的接⼝直接⽣成压缩包
void CDemo1Dlg::OnBnClickedButton1()
{
// TODO:  在此添加控件通知处理程序代码
//开始打包
string cmd_str = "\"C:\\Program Files\\WinRAR\\\"";//调⽤的winrar⽂件
string rar_path = "D:\\1\\111.zip";//⽣成的压缩包⽂件
/
/需要被压缩的⽂件
string rar_files = "D:\\1\\1.txt";
rar_files = rar_files + "" + "D:\\1\\2.txt";
//启动进程命令⾏传参调⽤
SHELLEXECUTEINFO ShExecInfo;
string parameters = " a -k -m1 -ep1 -r -o+ " + rar_path + "" + rar_files;
ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
罗先特区
ShExecInfo.hwnd = NULL;
ShExecInfo.lpVerb = "open";//多种类别有 "explorer" "print" 等
ShExecInfo.lpFile = cmd_str.c_str();//exe 路径
ShExecInfo.lpParameters = parameters.c_str();//参数
ShExecInfo.lpDirectory = NULL;
ShExecInfo.nShow = SW_HIDE;//
ShExecInfo.hInstApp = NULL;
ShellExecuteEx(&ShExecInfo);
WaitForSingleObject(ShExecInfo.hProcess, 3 * 1000);
}
演⽰
⽅法2
挺好⽤的。库⽂件也有⾃带的参考例⼦
问题1:
解决⽅法:将unzip.cpp和zip.cpp右键属性-设置成不使⽤预编译头
问题2:
解决⽅法是:到【项⽬属性】,点击【C++】⾥的【预处理器】,对【预处理器】进⾏编辑,在⾥⾯加⼊⼀段代码:_CRT_SECURE_NO_WARNINGS。
编译通过
#include "zip.h"
#include "unzip.h"
void CDemo2Dlg::OnBnClickedButton1()
{
// TODO:  在此添加控件通知处理程序代码
//创建压缩包
HZIP hz;
hz = CreateZip(_T("D:\\1\\simple1.zip"), 0);
ZipAdd(hz, _T("这是1.txt"), _T("D:\\1\\1.txt"));
ZipAdd(hz, _T("这是2.txt"), _T("D:\\1\\2.txt"));
CloseZip(hz);
}
void CDemo2Dlg::OnBnClickedButton2()
{
// TODO:  在此添加控件通知处理程序代码
//遍历压缩包内部⽂件名进⾏解压
HZIP hz = OpenZip("D:\\1\\simple1.zip", 0);
那一代人的读书功夫ZIPENTRY ze; GetZipItem(hz, -1, &ze); int numitems = ze.index;
for (int i = 0; i < numitems; i++)
{
GetZipItem(hz, i, &ze);
UnzipItem(hz, i, ze.name);
//打印
AfxMessageBox(ze.name);
财政收入}
CloseZip(hz);
}
黄埔造船厂演⽰
更多⽤法,看类库⾥⾃带的例⼦参考吧
Caesar卢尚宇
2021年2⽉6⽇
2021年10⽉12⽇补充
补充⼀个调⽤zip_utils_src库解压zip压缩包的例⼦
1.新建⼀个控制台项⽬(也可以参考下它⾃带的那个控制台例⼦是怎么搭建的)
环境与可持续发展
代码
#include <windows.h>
#include <tchar.h>
#include <stdio.h>
#include "zip.h"
#include "unzip.h"
int main()
{
//遍历压缩包内部⽂件名进⾏解压
SetCurrentDirectoryA("D:\\1");//将进程的⼯作⽬录移动到该参数所指的⽬录下,不设置的话,该⽬录为输出.exe的默认⽂件路径    HZIP hz = OpenZip("D:\\1\\1.zip", 0);
ZIPENTRY ze; GetZipItem(hz, -1, &ze); int numitems = ze.index;
for (int i = 0; i < numitems; i++)
{
GetZipItem(hz, i, &ze);
UnzipItem(hz, i, ze.name);
//打印
printf(ze.name);
printf("\n");
}
CloseZip(hz);
getchar();孙仪之
return0;
}
演⽰
相关直接参考它⾃带的例⼦
阿飞
2021年10⽉12⽇

本文发布于:2024-09-21 22:02:41,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/158885.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:压缩包   属性   默认   输出   进程   命令
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议