c++フォルダの削除
回転:http://blog.csdn.net/sshhbb/archive/2010/12/07/6061029.aspx
言語自体はファイルやフォルダを削除することができません。彼らはwindowsオペレーティングシステムのものですので、そのアプリの関数を借りなければなりません。
その一:shellを使う インターフェース:
void FileDelete(CString directory){ SHFILEOSTRUCT shFileOp; char stricurrentPath[MAX_PATH] memset(&shfileOp、0、sizeof(shFileOp); Get Currrent Directory(MAX_PATH、structPath); stracatus(structory); structurentPath[streen]+1==0 shFileOp.wFnc = FODELETE shfileOp.pFrom = structurentPath shfileOp.pTo = NULL shfileOp.fFlags = FOFUSILENT|FOFuNOCONFIRMATION FOF噬FOF柋CONFIRMMKDIR;
SHFileOperation(&shFileOp);
この関数を使用すると、萼include<Shlwapi.h>芫pragma commment(lib,「Shlwapi.lib」)が必要です。 彼を使ってdirectoryとその下のすべてのファイルを静かに削除できます。共有フォルダを削除する時にエラーやヒントがあると聞きましたが、試したことがありません。でも、私はsystemを使って削除をする時、共有フォルダの下の削除は間違いがあります。
第二に、MFCのCFileFindを使ってファイルを再帰的に巡回し、ファイルとフォルダを削除する。
book DeleteDirectory(char*str DirName){ CFileFind tempFind char streTempfileFind[MAX_PATH]
sprintf(streTempFileFind、“%s/*.*”,streDirName);
BOOL Is Finded=tempFindle.FindFile(streTemp FileFind);
while(Is Finded) { Is Finded=tempFind.FindNext File()
if(!tempFind.Is Dotツ() { char streFound FileName[MAXUPATH]
strcpy(streFoundFileName,tempFind.Get FileName().GetBuffer(MAXUPATH);
if(tempFind.Is Directory() { char streTempDir[MAXUPATH]
sprintf(streTempDir、「%s/%s」、streDirName、streFoundFileName);
DeleteDirectory(streTempDir); } else { char streTemp FileName[MAXUPATH]
sprintf(streTempFileName、“%s//%s”、streDirName、streFoundFileName);
DeleteFile(sTempFileName); } } }
tempfind.C lose()
if(!RemoveDirectory(straDirName) { return FALSE }
return TRUE;}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
回転:http://zhidao.baidu.com/question/188089955.html
言語自体はファイルやフォルダを削除することができません。彼らはwindowsオペレーティングシステムのものですので、そのアプリの関数を借りなければなりません。
その一:shellを使う インターフェース:
void FileDelete(CString directory){ SHFILEOSTRUCT shFileOp; char stricurrentPath[MAX_PATH] memset(&shfileOp、0、sizeof(shFileOp); Get Currrent Directory(MAX_PATH、structPath); stracatus(structory); structurentPath[streen]+1==0 shFileOp.wFnc = FODELETE shfileOp.pFrom = structurentPath shfileOp.pTo = NULL shfileOp.fFlags = FOFUSILENT|FOFuNOCONFIRMATION FOF噬FOF柋CONFIRMMKDIR;
SHFileOperation(&shFileOp);
この関数を使用すると、萼include<Shlwapi.h>芫pragma commment(lib,「Shlwapi.lib」)が必要です。 彼を使ってdirectoryとその下のすべてのファイルを静かに削除できます。共有フォルダを削除する時にエラーやヒントがあると聞きましたが、試したことがありません。でも、私はsystemを使って削除をする時、共有フォルダの下の削除は間違いがあります。
第二に、MFCのCFileFindを使ってファイルを再帰的に巡回し、ファイルとフォルダを削除する。
book DeleteDirectory(char*str DirName){ CFileFind tempFind char streTempfileFind[MAX_PATH]
sprintf(streTempFileFind、“%s/*.*”,streDirName);
BOOL Is Finded=tempFindle.FindFile(streTemp FileFind);
while(Is Finded) { Is Finded=tempFind.FindNext File()
if(!tempFind.Is Dotツ() { char streFound FileName[MAXUPATH]
strcpy(streFoundFileName,tempFind.Get FileName().GetBuffer(MAXUPATH);
if(tempFind.Is Directory() { char streTempDir[MAXUPATH]
sprintf(streTempDir、「%s/%s」、streDirName、streFoundFileName);
DeleteDirectory(streTempDir); } else { char streTemp FileName[MAXUPATH]
sprintf(streTempFileName、“%s//%s”、streDirName、streFoundFileName);
DeleteFile(sTempFileName); } } }
tempfind.C lose()
if(!RemoveDirectory(straDirName) { 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,"//*.*");
else
strcat(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);
else
DeleteDir(pdir);
delete []pdir;
}while(FindNextFile(hfind,&finddata));
if(RemoveDirectory(path))
return TRUE;
else
return 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 。