1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 自动获取指定路径文件夹 删除文件夹及子文件

自动获取指定路径文件夹 删除文件夹及子文件

时间:2019-12-03 13:39:08

相关推荐

自动获取指定路径文件夹 删除文件夹及子文件

1.思路

读取指定路径文件夹,获取文件个数、名字、大小等信息。核心函数:_findfirst、_findnext和_fineclose

struct _finddata_t {unsigned attrib;time_t time_create; time_t time_access; time_t time_write;_fsize_t size;char name[260];};

time_t:其实就是long

_fsize_t:就是unsigned long

attrib就是所查找文件的属性:_A_ARCH(存档)、_A_HIDDEN(隐藏)、_A_NORMAL(正常)、_A_RDONLY(只读)、 _A_SUBDIR(文件夹)、_A_SYSTEM(系统)。

time_create、time_access和time_write分别是创建文件的时间、最后一次访问文件的时间和文件最后被修改的时间。

size:文件大小

name:文件名

_findfirst函数:long _findfirst(const char * , struct _finddata_t );

第一个参数为文件名,可以用".“来查找所有文件,也可以用”*.cpp"来查找.cpp文件。第二个参数是_finddata_t结构体指针。若查找成功,返回文件句柄,若失败,返回-1。

_findnext函数:int _findnext(long, struct _finddata_t *);

第一个参数为文件句柄,第二个参数同样为_finddata_t结构体指针。若查找成功,返回0,失败返回-1。此函数可与_findfirst函数配合,找到指定路径下的所有文件

_findclose()函数:int _findclose(long);

只有一个参数,文件句柄。若关闭成功返回0,失败返回-1。

三个函数一起实现文件夹的读取,可以获取文件夹的名字、大小、时间等信息

删除文件夹,核心函数:SHFileOperation

int SHFileOperation( LPSHFILEOPSTRUCT lpFileOp);typedef struct _SHFILEOPSTRUCT {HWND hwnd;//指向发送消息的窗口UINT wFunc;//执行的操作LPCTSTR pFrom;//源文件名LPCTSTR pTo;//目标文件名FILEOP_FLAGS fFlags;//操作与确认标识BOOL fAnyOperationsAborted;//操作是否终止LPVOID hNameMappings;//文件映射LPCTSTR lpszProgressTitle;//进度条标题} SHFILEOPSTRUCT, *LPSHFILEOPSTRUCT;

2.代码实现,文件夹读取删除

hFile为long型,但运行报错,这里使用intptr_t,可以正常运行

getJustCurrentFile(CString CSpath, vector<string>& files){/*CSpath = CSpath.Left(CSpath.GetLength() - 13);string path = CStringA(CSpath);*/string path = "E:\\缺陷检测图片\\";//文件句柄intptr_t hFile = 0;struct _finddata_t fileinfo;string p;if ((hFile = _findfirst(p.assign(path).append("*").c_str(), &fileinfo)) != -1){do{if ((fileinfo.attrib & _A_SUBDIR))//attrib属性为_A_SUBDIR读取文件夹{if ((strcmp(fileinfo.name, ".") != 0) && (strcmp(fileinfo.name, "..") != 0))//读取文件路径时附带\\.和\\..两个文件,这里做下排除{files.push_back(path + fileinfo.name);}}} while (_findnext(hFile, &fileinfo) == 0);_findclose(hFile);}}

删除文件夹及子文件,删除文件的一些参数这里不作描述,可根据需求自行实现,这里只介绍框架

BOOL DelTree(LPCTSTR lpszPath){SHFILEOPSTRUCT FileOp;FileOp.fFlags = FOF_NOCONFIRMATION;FileOp.hNameMappings = NULL;FileOp.hwnd = NULL;FileOp.lpszProgressTitle = NULL;FileOp.pFrom = lpszPath;FileOp.pTo = NULL;FileOp.wFunc = FO_DELETE;return SHFileOperation(&FileOp) == 0;}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。