如何实现删除目录下的所有文件,只保留最新n个[初学者]

beststone 2004-05-14 03:34:21
如何实现删除目录下的所有文件,只保留最新n个[初学者]
,谢谢
...全文
182 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
h98458 2004-06-11
  • 打赏
  • 举报
回复

// 删除c:\temp\a\ 这个目录和其子目录

void __fastcall TForm1::Button1Click(TObject *Sender)
{
SHFILEOPSTRUCT OpStruc;
{
OpStruc.hwnd = Handle;
OpStruc.wFunc = FO_DELETE; //FO_COPY, FO_MOVE, FO_DELETE,FO_RENAME
OpStruc.fFlags = FOF_NOCONFIRMATION;//设置自动确认,这样就可以不出现对话框了
char From[]="c:\\temp\\a\0\0"; // 删除c:\temp\a\ 这个目录和其子目录
OpStruc.pFrom =From; //设置源文件或目录
OpStruc.pTo =NULL; //设置目标文件或目录这里是删除文件所以可以忽略
OpStruc.lpszProgressTitle = "正在删除文件……";
}
//执行函数
SHFileOperation(&OpStruc);
}
kwokwinglau 2004-06-11
  • 打赏
  • 举报
回复
借问一下雪客,为什么我试这个://读取文件的创建日期和字节
的时候小时数总比实际小8呀?
agtian 2004-06-10
  • 打赏
  • 举报
回复
绝对可以用
agtian 2004-06-10
  • 打赏
  • 举报
回复
给你个方法
//---------------------------------------------------------------------------
int DeleteFileFun(String FileDir)
{
TSHFileOpStruct *Dir;
String strTemp;

Dir = (TSHFileOpStruct*)malloc(sizeof(TSHFileOpStruct));

try
{
Dir->hwnd = Application->Handle;
Dir->wFunc = FO_DELETE;
strTemp=FileDir+"*.*"+'\0';
Dir->pFrom =strTemp.c_str();
Dir->pTo = FileDir.c_str();
Dir->fFlags = FOF_NOCONFIRMMKDIR+FOF_SILENT+FOF_NOCONFIRMATION;
SHFileOperation(Dir);
}
catch(...){if(Dir!=NULL){free(Dir);}}
if(Dir!=NULL){free(Dir);}
return 0;
}
//---------------------------------------------------------------------------
ltzhj 2004-06-10
  • 打赏
  • 举报
回复
ding
kataboy 2004-06-09
  • 打赏
  • 举报
回复
删除目录简单啊,BCB自带的帮助就有例子只是那个是搜索的。不过改一下就行了。
Friecin 2004-05-14
  • 打赏
  • 举报
回复
//删除目录下所有DBF临时文件
{
WIN32_FIND_DATA Data;
String strName,strPath;
strName=ExtractFilePath(Application->ExeName) + "*.dbf"; //要删的文件类型
strPath=ExtractFilePath(Application->ExeName); //取路径

HANDLE hFile = FindFirstFile(strName.c_str(), &Data);
if(hFile != INVALID_HANDLE_VALUE)
{
DeleteFile(strPath + Data.cFileName);
while(FindNextFile(hFile, &Data))
{
DeleteFile(strPath + Data.cFileName);
Application->ProcessMessages();
}
}
}

上面的例子是删除某一类型的文件,你说清楚,什么叫“只保留最新n个”???

是按文件的创建时间判断,还是按文件的修改时间判断???说清楚:
给你一个得到文件最后修改时间的例子:

//读取文件的创建日期和字节
HFILE hFile;
unsigned int size1;
hFile=_lopen(AttachFilePath.c_str(),OF_READ);

struct _FILETIME LastWriteDT;
SYSTEMTIME sltime;
GetFileTime((HANDLE*)hFile,NULL,NULL,&LastWriteDT);

FileTimeToSystemTime(&LastWriteDT,&sltime);
EditAttachLastSavedDate->Text=AnsiString(int(sltime.wYear))+"-"+AnsiString(int(sltime.wMonth))+"-"+AnsiString(int(sltime.wDay))+" "+AnsiString(int(sltime.wHour))+":"+AnsiString(int(sltime.wMinute));
Persistent8813 2004-05-14
  • 打赏
  • 举报
回复
我也在考虑,办法是有的,可能比较麻烦点,先看看大家怎么说

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧