读书人

FindFirstFile函数搜索并删除文件如

发布时间: 2012-09-19 13:43:54 作者: rapoo

FindFirstFile函数搜索并删除文件,怎么得到全路径?

C/C++ code
void CFindFileDlg::find(char *lpPath)  // lpPath 传入要查找的文件夹{    char szFind[MAX_PATH];    char szFile[MAX_PATH];    CString info;    WIN32_FIND_DATA FindFileData;        strcpy(szFind,lpPath);    strcat(szFind,"\\*.*");     HANDLE hFind=FindFirstFile(szFind,&FindFileData);  //根据文件名查找文件    if(INVALID_HANDLE_VALUE == hFind)    return;        while(TRUE)    {        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {            if(FindFileData.cFileName[0]!='.')            {                strcpy(szFile,lpPath);                strcat(szFile,"\\");                strcat(szFile, FindFileData.cFileName);                            find(szFile);            }        }        else        {      //deal with FindFileData.cFileName            CString temp111 = FindFileData.cFileName ;                                    if (strcmp(FindFileData.cFileName, "11.txt") == 0)  // 删除文件            {                // 此处无法得到11.txt文件的全路径,删除失败。                DeleteFile(FindFileData.cFileName);             }        }        if(!FindNextFile(hFind,&FindFileData))    break;    }    FindClose(hFind);    return;}

使用上述代码,搜索并删除指定目录下(包含子目录)的11.txt文件,但是不知道怎么得到11.txt文件的全路径。删除失败!困扰多日了,请大家指点,多谢!

[解决办法]
得到11.txt文件的全路径参考
C/C++ code
void CSearchFileDlg::OnSearchfile() {    UpdateData(TRUE);    SearchFile(m_strDir,m_strFile);}void CSearchFileDlg::SearchFile(CString strDir,CString strFile){    CFileFind ff;    CString szDir = strDir;        if(szDir.Right(1) != "\\")        szDir += "\\";        szDir += "*.*";        BOOL res = ff.FindFile(szDir);    while(res)    {        res = ff.FindNextFile();        if(ff.GetFileName()==strFile)        {            //找到了,加入列表框中            m_ctrlFilesList.AddString(ff.GetFilePath());        }        if(ff.IsDirectory() && !ff.IsDots())        {            //如果是一个子目录,用递归继续往深一层找            SearchFile(ff.GetFilePath(),strFile);        }    }    ff.Close();//关闭}
[解决办法]
C/C++ code
char fullpath[256] = {0};strcat(fullpath,lpPath);  strcat(fullpath,"\\");  strcat(fullpath,FindFileData.cFileName);
[解决办法]
有一个函数叫GetFilePath
CFileFind Finder;
Finder.FindFirstFile();
Finder.GetFilePath();
应该是这样的
[解决办法]
GetCurrentDirectory()获取当前路径,拼一下就行了。
不过MFC的CFileFind会更简单。
[解决办法]
CFileFind::FindFile/FileNextFile()

读书人网 >VC/MFC

热点推荐