读书人

BCB 文件夹删除,该如何解决

发布时间: 2012-02-05 12:07:15 作者: rapoo

BCB 文件夹删除
刚新建了一个文件夹
if (!CreateDirectory( "de ", NULL))
{
ShowMessage( "Couldn 't create new directory. ");
}

然后往里面添加各种东西,包括文件夹和文件。

如何删除该文件夹下的所有东东(文件夹和文件)?

贴出的代码最好是已测试通过的。。谢谢!

[解决办法]
//---------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "fmMain.h "
//---------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm "
TfrmMain *frmMain;
static bool blRun;
//---------------------------------------
__fastcall TfrmMain::TfrmMain(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------
void DeletePath(AnsiString path, bool removepath)
{
/* faReadOnly$00000001Read-only files
faHidden$00000002Hidden files
faSysFile$00000004System files
faVolumeID$00000008Volume ID files
faDirectory$00000010Directory files
faArchive$00000020Archive files
faAnyFile$0000003FAny file */

TSearchRec sr;
int iAttributes = faAnyFile;

if (FindFirst(path+ "\\*.* ", iAttributes, sr) == 0)
{
do
{
// if ((sr.Attr & iAttributes) == faArchive)
// DeleteFile(ExtractFilePath((AnsiString)path)+sr.Name);
if ((sr.Attr & faArchive) == faArchive)
{
// ShowMessage(path+ "\\ "+ sr.Name);
DeleteFile(path+ "\\ "+ sr.Name);
}
else if ( (sr.Attr & iAttributes) == faDirectory &&
sr.Name != ". " &&
sr.Name != ".. " )
{
// DeletePath(ExtractFilePath((AnsiString)path)+ "\\ "+ sr.Name, true); // 递归调用
DeletePath(path+ "\\ "+ sr.Name, true); // 递归调用
}
} while (FindNext(sr) == 0);
FindClose(sr);
}

// if(removepath) RemoveDirectory(ExtractFilePath(path).c_str());
if(removepath) RemoveDirectory(path.c_str());
}
//---------------------------------------
void DeleteMakeFile(AnsiString path)
{
/* faReadOnly$00000001Read-only files
faHidden$00000002Hidden files
faSysFile$00000004System files
faVolumeID$00000008Volume ID files
faDirectory$00000010Directory files
faArchive$00000020Archive files
faAnyFile$0000003FAny file */

TSearchRec sr;
int iAttributes = faAnyFile;
AnsiString asTemp;

// if (FindFirst(path, iAttributes, sr) == 0)
if (FindFirst(path+ "\\*.* ", iAttributes, sr) == 0)
{
do
{
if(! blRun) break;
if ((sr.Attr & iAttributes) == faArchive)
{
asTemp = sr.Name.UpperCase();
if((asTemp.AnsiPos( ".~ ")) || (asTemp.AnsiPos( ".TDS ")) ||


(asTemp.AnsiPos( ".OBJ ")) || (asTemp.AnsiPos( "VCL50. ")) ||
(asTemp.AnsiPos( ".SWP ")) || (asTemp.AnsiPos( ".LOG ")) ||
(asTemp.AnsiPos( ".DCU ")) || (asTemp.AnsiPos( ".IL ")) ||
(asTemp.AnsiPos( "_QSQL ")) || (asTemp.AnsiPos( ".DSK ")) ||
(asTemp.AnsiPos( ".ASM ")) || (asTemp.AnsiPos( ".BAK ")))
// DeleteFile(ExtractFilePath((AnsiString)path)+sr.Name);
DeleteFile(path+ "\\ "+ sr.Name);
}
else if ( (sr.Attr & iAttributes) == faDirectory &&
sr.Name != ". " &&
sr.Name != ".. " )
{
// DeleteMakeFile(ExtractFilePath((AnsiString)path)+sr.Name+ "\\*.* "); // 递归调用
DeleteMakeFile(path+ "\\ "+ sr.Name); // 递归调用
}
Application-> ProcessMessages();
} while (FindNext(sr) == 0);
FindClose(sr);
}
}
//---------------------------------------

void __fastcall TfrmMain::ButtonTempClick(TObject *Sender)
{
// 清除 Temp 文件夹内容
char lpPath[MAX_PATH];
ZeroMemory(lpPath, MAX_PATH);
DWORD dwTemp = GetTempPath(MAX_PATH, lpPath);
// ShowMessage(lpPath);
if((dwTemp> 0) && (3!=dwTemp))
{
if( '\\ ' == lpPath[StrLen(lpPath)-1]) lpPath[StrLen(lpPath)-1] = 0;
// ShowMessage(lpPath);
DeletePath(lpPath, false);
}
}
//---------------------------------------
void __fastcall TfrmMain::ButtonObjClick(TObject *Sender)
{
blRun = true;
// ShowMessage(ExtractFileDir(Application-> ExeName));
DeleteMakeFile(ExtractFileDir(Application-> ExeName));
ShowMessage( "OK ");
}
//---------------------------------------
void __fastcall TfrmMain::FormClose(TObject *Sender, TCloseAction &Action)
{
blRun = false;
}
//---------------------------------------

读书人网 >C++ Builder

热点推荐