FindFirstFile函数搜索并删除文件,怎么得到全路径?
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;}
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();//关闭}
[解决办法]
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()