A. MFC中遍历当前目录下的文件和文件夹,然后将所有找到的文件夹的名字提取出来
把以下代码放到Win32控制台运行,亲测可用:#include <windows.h> #define FILEILTER "*.*" //查找条件,例如查找.exe格式的那么就用*.exe,当然也可以直接用setup.exe#include "iostream.h"#include "stdio.h"BOOL IsRoot(LPCTSTR lpszPath) { TCHAR szRoot[4]; wsprintf(szRoot, "%c:\\", lpszPath[0]); return (lstrcmp(szRoot, lpszPath) == 0); } void FindInAll(LPCTSTR lpszPath) { TCHAR szFind[MAX_PATH]; lstrcpy(szFind, lpszPath); if (!IsRoot(szFind)) lstrcat(szFind, "\\"); lstrcat(szFind, FILEILTER); // 找所有文件 WIN32_FIND_DATA wfd; HANDLE hFind = FindFirstFile(szFind, &wfd); if (hFind == INVALID_HANDLE_VALUE) // 如果没有找到或查找失败 return; do { if (wfd.cFileName[0] == '.') continue; // 过滤这两个目录 if (wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { TCHAR szFile[MAX_PATH]; if (IsRoot(lpszPath)) wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); else { wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); FindInAll(szFile); // 如果找到的是目录,则进入此目录进行递归 } } else { TCHAR szFile[MAX_PATH]; if (IsRoot(lpszPath)) { wsprintf(szFile, "%s%s", lpszPath, wfd.cFileName); } else { wsprintf(szFile, "%s\\%s", lpszPath, wfd.cFileName); printf("%s\n",szFile); } // 对文件进行操作 } } while (FindNextFile(hFind, &wfd)); FindClose(hFind); // 关闭查找句柄 } int main(int argc, char* argv[]) { FindInAll("E:"); //这里设置目录为E:,请根据需要更改 return 0; }
B. MFC基于对话框的程序,一个按钮,实现获取指定目录下的所有文件的文件名
http://bbs.csdn.net/topics/270014451有类似的你自己看吧。
C. mfc怎样获取一个文件夹下所有的文件
voidCXXXDlg::SearchFiles(CStringstrMusicFolder){CFileFindff;strMusicFolder+=_T("\");strMusicFolder+=_T("*.*");BOOLres=ff.FindFile(strMusicFolder);while(res){res=ff.FindNextFile();if(!ff.IsDirectory()&&!ff.IsDots()){afxMessageBox(ff.GetFilePath());}}ff.Close();}
D. MFC获取指定文件夹文件目录
在MFC中,使用CFileFind类,可以枚举一个目录下的所有文件和子回目录。
示例:
voidListFolder(constCString&sPath){CFileFindff;BOOLbFound=ff.FindFile(sPath+"\*.*");while(bFound){bFound=ff.FindNextFile();if(ff.IsDirectory())//是目录{if(!ff.IsDots())//不是本答级目录或父目录(.和..)ListFolder(ff.GetFilePath());//递归子目录}else{AfxMessageBox("文件:"+ff.GetFilePath());}}ff.Close();}
E. 如何在mfc中实现打开一个文件,获取文件名
这个满足你的要求s返回文件路径#defineDLG_FILTER"ALLFiles(*.*)|*.*||"#defineDLG_EXT"*"CFileDialogdlg(TRUE,_T(DLG_EXT),NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,_T(DLG_FILTER));if(dlg.DoModal()==IDOK){POSITIONpos=dlg.GetStartPosition();while(pos!=0){CStrings=dlg.GetNextPathName(pos);}}下面代码,可以选择文件夹,会返回文件夹的路径需要自己查找每个文件char*GetPath(HWNDhWnd,char*pBuffer){BROWSEINFObf;LPITEMIDLISTlpitem;memset(&bf,0,sizeofBROWSEINFO);bf.hwndOwner=hWnd;bf.lpszTitle="选择路径";bf.ulFlags=BIF_RETURNONLYFSDIRS;//属性你可自己选择lpitem=SHBrowseForFolder(&bf);if(lpitem==NULL)//如果没有选择路径则返回0return0;//如果选择了路径则复制路径,返回路径长度SHGetPathFromIDList(lpitem,pBuffer);returnpBuffer;}
F. MFC中文件名的读取问题
1楼说的问题肯定存在,以你提供的信息不够完整,不能确定有无其他问题。按你的书写顺序,最起码第一个文件丢失了,未存入数组filename中,而最后一个存放的是空文件。应该是: while (bWorking) { filename1[i] = finder.GetFileName(); i++; bWorking = finder.FindNextFile(); }
G. C++ MFC获取文件名字(包括后缀名)以下做法是否正确
相信楼主会喜欢参考资料的,如果要获取文件名等,请找函数GetFileExt、GetFileName、GetPathName等。你找到函数新开一个连接,然后自己看函数说明吧。注:我提供的连接在参考资料。
H. MFC按钮打开选择一个文件夹,然后获得文件夹中的所有txt文件名称!
这个满足你的要求 s返回文件路径#define DLG_FILTER "ALL Files (*.*)|*.*||" #define DLG_EXT "* " CFileDialog dlg(TRUE, _T(DLG_EXT), NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, _T(DLG_FILTER)); if (dlg.DoModal() == IDOK) { POSITION pos = dlg.GetStartPosition(); while (pos != 0) { CString s = dlg.GetNextPathName(pos); } } 下面代码,可以选择文件夹,会返回文件夹的路径需要自己查找每个文件char* GetPath(HWND hWnd,char* pBuffer) { BROWSEINFO bf; LPITEMIDLIST lpitem; memset(&bf,0,sizeof BROWSEINFO); bf.hwndOwner=hWnd; bf.lpszTitle= "选择路径"; bf.ulFlags=BIF_RETURNONLYFSDIRS; //属性你可自己选择 lpitem=SHBrowseForFolder(&bf); if(lpitem==NULL) //如果没有选择路径则返回 0 return 0; //如果选择了路径则复制路径,返回路径长度 SHGetPathFromIDList(lpitem,pBuffer); return pBuffer; }
I. mfc 怎么获取exe的文件名
GetMoleFileName
未经允许不得转载:山九号 » mfc获取当前文件的所有文件名|MFC获取指定文件夹文件目录