网站可以做电信增值,华为邮箱注册,wordpress标题写法,wordpress的json api#x1f4a1; 需要该C实用库源码的大佬们#xff0c;可扫码关注文章末尾的微信公众号二维码#xff0c;或搜索微信公众号“希望睿智”。添加关注后#xff0c;输入消息“超级好用的C实用库”#xff0c;即可获得源码的下载链接。 概述 文件和目录操作是操作系统层面上的基…  需要该C实用库源码的大佬们可扫码关注文章末尾的微信公众号二维码或搜索微信公众号“希望睿智”。添加关注后输入消息“超级好用的C实用库”即可获得源码的下载链接。 概述 文件和目录操作是操作系统层面上的基础功能允许用户或程序对磁盘上的文件以及目录结构进行管理。文件操作主要包括创建文件、打开文件、读写文件内容、移动或定位文件指针以及关闭文件等功能目录操作主要包括创建目录、删除目录、移动目录、重命名目录、列出目录内容等功能。在C/C编程中除了标准库提供的stdio.h中的文件和目录操作函数外还可以利用POSIX API (dirent.h, unistd.h) 或Windows API来进行更底层的操作。 CHP_File类 在Windows和Linux操作系统下进行文件和目录操作的系统API并不相同比如对于创建目录的操作Windows下使用CreateDirectory函数Linux下使用mkdir函数。为了封装跨平台的文件目录操作我们实现了CHP_File类。CHP_File类的头文件可参考下面的示例代码。 
#pragma once#include string
#include vectortypedef void *HFileFinder;class CHP_File
{
public:static int GetFileTime(const char *pszFile, time_t tmCreated, time_t tmModified);static int GetFileSize(const char *pszFile, unsigned int uiSizeBytes);static int CreateDir(const char *pszDir, bool bRecursive  true);static int RemoveDir(const char *pszDir, bool bIgnoreError  true);static void FindFiles(const char *pszDir, const char *pszFilter, std::vectorstd::string vctFile, bool bRecursive  true);static void FindSubDirs(const char *pszDir, std::vectorstd::string vctSubDir, bool bRecursive  true);static char *FindOpen(HFileFinder hFinder, const char *pszDir, bool bFindDir, char *pszFile, int nFileLen);static char *FindNext(HFileFinder hFinder, const char *pszDir, bool bFindDir, char *pszFile, int nFileLen);static void FindClose(HFileFinder hFinder);private:CHP_File();~CHP_File();static char *FindFile(HFileFinder hFinder, const char *pszDir, bool bFindDir, char *pszFile, int nFileLen, bool bFirst);#ifdef _WIN32static bool RemoveExistingDir(const char *pszDir);static bool RemoveExistingFile(const char *pszFile);
#endif
}; CHP_File类是一个接口类不需要实例化。因此我们将构造函数和析构函数声明成了私有的并提供了9个静态函数。下面我们将分别介绍这几个导出的公共接口。 GetFileTime获取文件的创建时间和修改时间。参数pszFile为文件名参数tmCreated为文件的创建时间参数tmModified为文件的修改时间返回值为0表示成功其他为错误码。 GetFileSize获取文件的大小。参数pszFile为文件名参数uiSizeBytes为文件大小单位为字节返回值为0表示成功其他为错误码。 CreateDir创建目录。参数pszDir为待创建的目录名参数bRecursive表示是否递归创建所有目录返回值为0表示成功其他为错误码。 RemoveDir删除目录。参数pszDir为待删除的目录名参数bIgnoreError表示是否忽略错误返回值为0表示成功其他为错误码。 FindFiles查找指定目录下的文件。参数pszDir为待查找的目录参数pszFilter为过滤器支持?和*为NULL或空字符串时表示查找所有文件参数vctFile为符合条件的所有文件参数bRecursive表示是否递归子目录查找。 FindSubDirs查找指定目录下的目录。参数pszDir为待查找的目录参数vctSubDir为符合条件的所有目录参数bRecursive表示是否递归子目录查找。 FindOpen打开文件查找适用于逐个查找文件。参数hFinder为文件查找的句柄参数pszDir为待查找的目录参数bFindDir表示查找目录还是文件true表示查找目录false表示查找文件参数pszFile为找到的文件名或者目录名参数nFileLen为文件名或者目录名的长度。返回值为非NULL表示找到是找到的文件名或目录名的buffer指针否则表示未找到。 FindNext查找下一个文件。参数hFinder为文件查找的句柄参数pszDir为待查找的目录参数bFindDir表示查找目录还是文件true表示查找目录false表示查找文件参数pszFile为找到的文件名或者目录名参数nFileLen为文件名或者目录名的长度。返回值为非NULL表示找到是找到的文件名或目录名的buffer指针否则表示未找到。 FindClose关闭文件查找。参数hFinder为文件查找的句柄。 总结 在CHP_File类中我们封装了获取文件的创建时间和修改时间、获取文件的大小、创建目录、删除目录、查找指定目录下的文件、查找指定目录下的目录、打开文件查找、查找下一个文件、关闭文件查找等跨平台的功能和函数。这些函数是通过兼容多种操作系统API或使用标准库提供的函数来实现的。