[C++ zip] 如何压缩一个文件夹?

2024-09-04 06:58
文章标签 c++ 文件夹 zip 压缩

本文主要是介绍[C++ zip] 如何压缩一个文件夹?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*HZIP newZipFile = CreateZip(full_filepath_,0);	 ZIP_Folder(str_path, str_path, full_filepath_,newZipFile);CloseZip(newZipFile); //关闭zip文件
*/ZIP_Folder(const wxString &in_epub_folder,const wxString &in_folder_old,const wxString &out_filename,HZIP newZipFile)
{if (!wxFileName::Exists(in_folder)){return ;}//建立一个空的压缩文件//HZIP newZipFile = CreateZip(out_filename,0);TCHAR* ch_folder;TCHAR* ch_filename;TCHAR* ch_fullpath;wxDir dir(in_folder);wxString filename;wxString file_and_folder_short_name;int iPos=0;bool cont = dir.GetFirst(&filename, wxEmptyString, wxDIR_DEFAULT);int iStartPos = 0;while (cont){wxString file = in_folder + wxFILE_SEP_PATH + filename;iPos = file.Find(in_folder_old);if(wxString::npos != iPos ){  iStartPos = in_folder_old.length();file_and_folder_short_name = file.substr(iStartPos);}const char* file_char = file;if (wxFileExists(file)){if((_access(file, 2)) != -1){file_and_folder_short_name = file_and_folder_short_name.substr(1);ch_filename = new TCHAR[file_and_folder_short_name.length()];  lstrcpy(ch_filename, file_and_folder_short_name); //File to Zipch_fullpath = new TCHAR[file.length()];   lstrcpy(ch_fullpath, file);  ZipAdd(newZipFile, ch_filename, ch_fullpath); //将文件添加到zip文件中  }}else{  file_and_folder_short_name =file_and_folder_short_name.substr(1)+"/";ch_folder = new TCHAR[file_and_folder_short_name.length()];  lstrcpy(ch_folder, file_and_folder_short_name);ZipAdd(newZipFile, ch_folder, NULL);   //建立一个文件夹ZIP_Folder(file,in_folder_old,out_filename,newZipFile);}cont = dir.GetNext(&filename);}return ;
}


使用的方法:

/*HZIP newZipFile = CreateZip(full_filepath_,0);	 ZIP_Folder(str_path, str_path, full_filepath_,newZipFile);CloseZip(newZipFile); //关闭zip文件
*/



这篇关于[C++ zip] 如何压缩一个文件夹?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1135320

相关文章

一文详解SpringBoot响应压缩功能的配置与优化

《一文详解SpringBoot响应压缩功能的配置与优化》SpringBoot的响应压缩功能基于智能协商机制,需同时满足很多条件,本文主要为大家详细介绍了SpringBoot响应压缩功能的配置与优化,需... 目录一、核心工作机制1.1 自动协商触发条件1.2 压缩处理流程二、配置方案详解2.1 基础YAML

C++ 中的 if-constexpr语法和作用

《C++中的if-constexpr语法和作用》if-constexpr语法是C++17引入的新语法特性,也被称为常量if表达式或静态if(staticif),:本文主要介绍C++中的if-c... 目录1 if-constexpr 语法1.1 基本语法1.2 扩展说明1.2.1 条件表达式1.2.2 fa

一文教你Python引入其他文件夹下的.py文件

《一文教你Python引入其他文件夹下的.py文件》这篇文章主要为大家详细介绍了如何在Python中引入其他文件夹里的.py文件,并探讨几种常见的实现方式,有需要的小伙伴可以根据需求进行选择... 目录1. 使用sys.path动态添加路径2. 使用相对导入(适用于包结构)3. 使用pythonPATH环境

Python实现将MySQL中所有表的数据都导出为CSV文件并压缩

《Python实现将MySQL中所有表的数据都导出为CSV文件并压缩》这篇文章主要为大家详细介绍了如何使用Python将MySQL数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到... python将mysql数据库中所有表的数据都导出为CSV文件到一个目录,并压缩为zip文件到另一个

C++中::SHCreateDirectoryEx函数使用方法

《C++中::SHCreateDirectoryEx函数使用方法》::SHCreateDirectoryEx用于创建多级目录,类似于mkdir-p命令,本文主要介绍了C++中::SHCreateDir... 目录1. 函数原型与依赖项2. 基本使用示例示例 1:创建单层目录示例 2:创建多级目录3. 关键注

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

C++字符串提取和分割的多种方法

《C++字符串提取和分割的多种方法》在C++编程中,字符串处理是一个常见的任务,尤其是在需要从字符串中提取特定数据时,本文将详细探讨如何使用C++标准库中的工具来提取和分割字符串,并分析不同方法的适用... 目录1. 字符串提取的基本方法1.1 使用 std::istringstream 和 >> 操作符示

C++原地删除有序数组重复项的N种方法

《C++原地删除有序数组重复项的N种方法》给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度,不要使用额外的数组空间,你必须在原地修改输入数组并在使用O(... 目录一、问题二、问题分析三、算法实现四、问题变体:最多保留两次五、分析和代码实现5.1、问题分析5.

C++ 各种map特点对比分析

《C++各种map特点对比分析》文章比较了C++中不同类型的map(如std::map,std::unordered_map,std::multimap,std::unordered_multima... 目录特点比较C++ 示例代码 ​​​​​​代码解释特点比较1. std::map底层实现:基于红黑