文件夹操作-创建/删除/重命名/复制文件夹
前言
项目进行过程中遇到一些文件夹相关操作,本文主要是删除指定目录。
c++代码如下:

/************************************************************************ * Copyright(c) 2016 ZRJ * All rights reserved. * * File: main.cpp * Brief: copy/rename/delete/mkdir Folder * Version: 1.0 * Author: ZRJ * Email: happyamyhope@163.com * Date: 2016/12/08 * History: * 20161208:复制/重命名/删除/重建文件夹; ************************************************************************/ //头文件 #include <stdio.h> #include <iostream> #include "Windows.h" //获取系统时间 #include <time.h> //复制文件夹并重命名 #include <io.h>//_access函数 #include <direct.h>//mkdir #include "Shellapi.h" #include "tchar.h" //#include "shlwapi.h" #pragma comment(lib,"shell32.lib") //告诉编译器在编译形成的.obj文件和.exe文件中添加一条信息,使得连链接器在链接库时去直接找shell32.lib这个库,不要去找别的库; //----------------------------------------- //调参 time_t t; char now[64]; SHFILEOPSTRUCT fop; //----------------------------------------- //函数声明 BOOL SHDeleteFolder(LPCTSTR pstrFolder);//删除指定目录 void CopyFolder(SHFILEOPSTRUCT fop);//复制文件夹到另一个文件夹路径并重命名该文件夹,删除目录并重建 void CreateFolder(char* filename);//不存在则创建文件夹; //----------------------------------------- //函数定义 //删除指定目录 BOOL SHDeleteFolder(LPCTSTR pstrFolder) { //int iPathLen = _tcslen(pstrFolder); size_t iPathLen = _tcslen(pstrFolder); TCHAR tczFolder[MAX_PATH + 1]; SHFILEOPSTRUCT FileOp; if ((NULL == pstrFolder)) { return FALSE; } if (iPathLen >= MAX_PATH) { return FALSE; } /*确保目录的路径以2个\0结尾*/ ZeroMemory(tczFolder, (MAX_PATH + 1)*sizeof(TCHAR)); _tcscpy(tczFolder, pstrFolder); tczFolder[iPathLen] = _T('\0'); tczFolder[iPathLen + 1] = _T('\0'); ZeroMemory(&FileOp, sizeof(SHFILEOPSTRUCT)); FileOp.fFlags |= FOF_SILENT; //不显示进度 FileOp.fFlags |= FOF_NOERRORUI; //不报告错误信息 FileOp.fFlags |= FOF_NOCONFIRMATION; //直接删除,不进行确认 FileOp.hNameMappings = NULL; FileOp.hwnd = NULL; FileOp.lpszProgressTitle = NULL; FileOp.wFunc = FO_DELETE; FileOp.pFrom = tczFolder; //要删除的目录,必须以2个\0结尾 FileOp.pTo = NULL; FileOp.fFlags &= ~FOF_ALLOWUNDO; //直接删除,不放入回收站 /*删除目录*/ if (0 == SHFileOperation(&FileOp)) { return TRUE; } else { return FALSE; } } //复制文件夹到另一个文件夹路径并重命名该文件夹 void CopyFolder(SHFILEOPSTRUCT fop) { fop.wFunc = FO_COPY; char newname[100]; //复制当前文件夹到另一个文件夹 fop.pFrom = _T(".\\pic\0");//源文件夹的路径,以"\0"即空为结尾 fop.pTo = _T(".\\savepic\0");//拷入文件的文件夹路径,以"\0"即空为结尾 SHFileOperation(&fop); //重命名当前文件夹 //系统当前时间 t = time(NULL); strftime(now, sizeof(now), "%Y%m%dT%H%M%S", localtime(&t)); sprintf(newname, ".\\savepic\\savepic_%s\0", now); rename(".\\savepic\\pic\0", newname); //删除文件夹并重新创建 SHDeleteFolder(".\\pic"); _mkdir(".\\pic"); return; } //不存在则创建文件夹; void CreateFolder(char* filename) { char* tag; for (tag = filename; *tag; tag++) { if (*tag == '\\') { char buf[1000], path[1000]; strcpy(buf, filename); buf[strlen(filename) - strlen(tag) + 1] = NULL; strcpy(path, buf); if (_access(path, 0) == -1)//如果文件具有指定的访问权限,则函数返回0;如果文件不存在或者不能访问指定的权限,则返回-1;mode为6表示读写权限; { _mkdir(path); //创建成功返回0 不成功返回-1; } } } return ; } void main() { //CopyFolder(fop); char* file = ".\\pic\\"; CreateFolder(file); return; }
完
各美其美,美美与共,不和他人作比较,不对他人有期待,不批判他人,不钻牛角尖。
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
心正意诚,做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
版权声明,转载请注明出处:https://www.cnblogs.com/happyamyhope/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】