日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

c++删除文件夹

發布時間:2023/11/27 生活经验 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c++删除文件夹 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉自:http://blog.csdn.net/sshhbb/archive/2010/12/07/6061029.aspx

?

c++語言本身是不能刪除文件或文件夾的,他們是windows操作系統里的東西,所以得借助其api函數。

其一:使用shell? 接口:

void FileDelete(CString directory)
{
?SHFILEOPSTRUCT??? shFileOp;
?char????? strCurrentPath[MAX_PATH];
?memset(&shFileOp,0,sizeof(shFileOp));
???
?GetCurrentDirectory(MAX_PATH,strCurrentPath);
?strcat_s(strCurrentPath,sizeof(strCurrentPath),directory);
?strCurrentPath[strlen(strCurrentPath)+1] = 0;
?shFileOp.wFunc??? = FO_DELETE;
?shFileOp.pFrom??? = strCurrentPath;
?shFileOp.pTo??? = NULL;
?shFileOp.fFlags??? = FOF_SILENT | FOF_NOCONFIRMATION | FOF_NOCONFIRMMKDIR;

?SHFileOperation(&shFileOp);
}

使用該函數你得 #include<Shlwapi.h> #pragma comment(lib,"Shlwapi.lib")? 使用他可以將directory和其下的所有文件靜默刪除,聽說在刪除共享文件夾的時候會出錯或提示,沒試過。不過我使用system()做刪除的時候共享文件夾下的刪除是會出錯的。

其二: 使用MFC的CFileFind遞歸遍歷文件并刪除文件和文件夾

?bool DeleteDirectory(char* strDirName)
{
??? CFileFind tempFind;
???
??? char strTempFileFind[MAX_PATH];

??? sprintf(strTempFileFind,"%s//*.*", strDirName);

??? BOOL IsFinded = tempFind.FindFile(strTempFileFind);

??? while (IsFinded)
??? {
??????? IsFinded = tempFind.FindNextFile();

??????? if (!tempFind.IsDots())
??????? {
??????????? char strFoundFileName[MAX_PATH];

??????????? strcpy(strFoundFileName, tempFind.GetFileName().GetBuffer(MAX_PATH));

??????????? if (tempFind.IsDirectory())
??????????? {
??????????????? char strTempDir[MAX_PATH];

??????????????? sprintf(strTempDir,"%s//%s", strDirName, strFoundFileName);

??????????????? DeleteDirectory(strTempDir);
??????????? }
??????????? else
??????????? {
??????????????? char strTempFileName[MAX_PATH];

??????????????? sprintf(strTempFileName,"%s//%s", strDirName, strFoundFileName);

??????????????? DeleteFile(sTempFileName);
??????????? }
??????? }
??? }

??? tempFind.Close();

??? if(!RemoveDirectory(strDirName))
??? {
??????? return FALSE;
??? }

??? return TRUE;
}

?

//

?

轉自:http://zhidao.baidu.com/question/188089955.html

?

?

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void main()
{char str[120] ="RMDIR /S "; //加上 /Q  刪除時不要求確認char str2[100]; //文件夾的絕對路徑printf("輸入的文件夾位置為:/n"); scanf("%s",str2);strcat(str,str2);system(str);system("pause");
} 

?

方便的辦法,你可以使用dos命令,在C++里可以用system調用
比如system("RMDIR aaa");
就是刪掉aaa這個目錄
dos命令可以在cmd里打help回車查看
http://topic.csdn.net/u/20090126/23/950e840e-8ba9-4be7-94ba-2e48e7cdf862.html
BOOL DeleteDir(char * path)
{WIN32_FIND_DATA finddata;HANDLE hfind;char * pdir;pdir=new char[strlen(path)+5];strcpy(pdir,path);if(path[strlen(path)-1]!='//')strcat(pdir,"//*.*");elsestrcat(pdir,"*.*");hfind=FindFirstFile(pdir,&finddata);if(hfind==INVALID_HANDLE_VALUE)return FALSE;delete []pdir;do{pdir=new char[strlen(path)+strlen(finddata.cFileName)+2];sprintf(pdir,"%s//%s",path,finddata.cFileName);if(strcmp(finddata.cFileName,".")==0||strcmp(finddata.cFileName,"..")==0){RemoveDirectory(pdir);continue;}if((finddata.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)==0)DeleteFile(pdir);elseDeleteDir(pdir);delete []pdir;}while(FindNextFile(hfind,&finddata));if(RemoveDirectory(path))return TRUE;elsereturn FALSE;
}
//

轉自:http://zhidao.baidu.com/question/96292128.html

c++刪除空文件夾

使用方法: char dir[] = "d://test//"; DeleteEmptyDirectories(dir); / void DeleteEmptyDirectories(const char *dir) {WIN32_FIND_DATA finder;HANDLE hFileFind;char search[MAX_PATH]; strcpy(search, dir); strcat(search, "*.*");hFileFind = FindFirstFile(search, &finder);if (hFileFind != INVALID_HANDLE_VALUE){do{char path[MAX_PATH];strcpy(path, dir);strcat(path, finder.cFileName);if ((finder.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)&& strcmp(finder.cFileName, ".")&& strcmp(finder.cFileName, "..")){char subdir[MAX_PATH];strcpy(subdir, path);strcat(subdir, "//");DeleteEmptyDirectories(subdir);// AfxMessageBox(subdir);RemoveDirectory(path);}} while (FindNextFile(hFileFind, &finder) != 0);FindClose(hFileFind);} }
另外,用SHFILEOPSTRUCT、SHFileOperation也可以刪除文件夾。

總結

以上是生活随笔為你收集整理的c++删除文件夹的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:c++删除文件夹