
我只会C++,叫人翻译一下
只删除文件
BOOL RemoveDir(LPCTSTR lpszPath)
{
WIN32_FIND_DATA wfd;
HANDLE hFind;
if ((hFind = FindFirstFile(CString(lpszPath) + "\\",&wfd)) != INVALID_HANDLE_VALUE)
{
do
{
if (CString(wfdcFileName) == "" || CString(wfdcFileName) == "")
continue;
if (wfddwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
RemoveDir(CString(lpszPath) + "\\");
continue;
}
DeleteFile(CString(lpszPath) + "\\" + wfdcFileName);
} while(FindNextFile(hFind,&wfd);
}
else
return FALSE;
CloseHandle(hFind);
return TRUE;
}
代码里面缺少findclose,当然不能正常删除。
SelectDirectory 函数
通过显示一个对话框来让用户选择一个目录。
注意:在使用前要在Uses 语句中添加包含FileCtrl 的说明。
函数原型如下:
function SelectDirectory(const Caption: string; const Root: WideString;
out Directory: string): Boolean; overload;
function SelectDirectory(var Directory: string; Options: TSelectDirOpts;
HelpCtx: Longint): Boolean; overload;
对于第1 个重载函数,参数Caption 为对话框的标题内容;参数Root 指定一个目录,为进行浏览的最初目录;选中的目录保存在参数Directory 中。
对于第2 个重载函数,参数Directory 中指定的目录为对话框显示时选中的目录,最后用户选定的目录也保存在参数Directory 中;参数Options 为一些设置项目的集合,如果为空,则用户通过对话框只能选择已经存在的目录,没有提供编辑框给用户来输入一个新的目录名。TSelectDirOpts 类型定义如下:
type
TSelectDirOpt = (sdAllowCreate, sdPerformCreate, sdPrompt);
TSelectDirOpts = set of TSelectDirOpt;
具体数值的含义如下。
• sdAllowCreate 对话框中有一个Edit 组件,用户可以输入新的目录名。但是如果要新建该目录,程序员必须根据获取的文件自己编写代码新建目录。
• sdPerformCreate 对话框中有一个Edit 组件,用户可以输入一个不存在的目录名,对话框将选中该目录并创建该目录。
• sdPrompt 对话框中有一个Edit 组件,如果用户输入的目录名不存在,则显示一个信息对话框提示是否创建新目录。如果同时选中的是sdAllowCreate 设置,则程序员必须根据获取的文件自己编写代码新建目录。
ExpandConstant() 是一个函数,应该是一个自定义的函数,它返回一个文件目录字符串,
ps := ExpandConstant('{app}');
上句的是通过 ExpandConstant 返回应用(app是应用的意思,即 application ) 程序的安装目录
ExpandConstant('{src}') ;
上句是通过ExpandConstant 返回安装程序源目录(src 即 Source )。
result:= ExpandConstant('{src}')+'\installexe' 是返回安装程序源目录中的安装程序的全文件名。
整个函数 CopyCommon() 是将安装程序源目录中的文件复制到安装目的目录。然后返回安装程序的全文件名。
你是要寻找文件的例子吧
给你个例子
删除文件夹
删除文件夹你在cmd里面删除试试,他会提示文件夹不为空不能删除。意思就是必须先删除文件夹里面的文件再删除文件夹
删除文件夹里面的文件,就要用到寻找所有文件,包括文件夹里面的文件夹(子文件夹)
函数名称:BianLiDel
函数功能:删除目录下所有文件,最后删除文件夹
返回值:成功返回TRUE 失败返回FALSE
//以下是宽字节用法
//窄字节替换函数char sprintf strcmp 去掉_T()
//C:\文件夹\WenJianJia\
//这时候会删除WenJianJia这个目录
BOOL BianLiDel(wchar_t path)
{
wchar_t D_Path[MAX_PATH]={0};
wsprintfW(D_Path,_T("%s"),path);//在文件名后面加上,输入C:\文件夹\WenJianJia\就会变成C:\文件夹\WenJianJia\
WIN32_FIND_DATA wfd;//定义一个结构体
ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体
HANDLE fhn = FindFirstFile(D_Path,&wfd);//寻找第一个文件
BOOL bRet = TRUE;//如果第一个文件找到了就进入循环
while (bRet)
{
wchar_t tem[MAX_PATH]={0};
if (wfddwFileAttributes==FILE_ATTRIBUTE_DIRECTORY&&_wcsicmp(_T(""),wfdcFileName)!=0&&_wcsicmp(_T(""),wfdcFileName)!=0)
{ //判断是否为目录 判断文件夹名字是否为''和''
wsprintfW(tem,_T("%s%s\\"),path,wfdcFileName);
BianLiDel(tem);//是目录就删除目录下的文件
}else{
wsprintfW(tem,_T("%s%s"),path,wfdcFileName);
SetFileAttributes(tem,FILE_ATTRIBUTE_NORMAL);
DeleteFile(tem);//不是就删除文件
}
ZeroMemory(&wfd,sizeof(WIN32_FIND_DATA));//清空结构体
bRet = FindNextFile(fhn,&wfd);//寻找下一个文件
}
FindClose(fhn);//如果不关闭会一直提示被占用
return RemoveDirectory(path);//删除目录
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)