MFC获取电脑文件夹下文件的名称,类型,大小,后缀(附源码)
来源:互联网 发布:网络接收器怎么用 编辑:程序博客网 时间:2024/06/05 14:30
- 测试工具
VS2013 - 需求
主要获取电脑上面文件夹下的所有文件 - 截图预览
- 部分代码
void CMFCApplication14Dlg::OnBnClickedOk(){ /************************************************************************/ /* 获取文件夹路径 弹出对话框 */ /************************************************************************/ char szPath[MAX_PATH]; CString str2; ZeroMemory(szPath, sizeof(szPath)); BROWSEINFO bi; bi.hwndOwner = this->GetSafeHwnd(); bi.pidlRoot = NULL; bi.pszDisplayName = (LPWSTR)szPath; bi.lpszTitle = _T("请选择文件夹"); bi.ulFlags = 0; bi.lpfn = NULL; bi.lParam = 0; bi.iImage = 0;> //弹出目录对话框 LPITEMIDLIST lp = SHBrowseForFolder(&bi); if (lp == NULL) { return; } else { //SHGetPathFromIDList(lp,str2.GetBuffer(MAX_PATH)); //这里不知道为什么,若使用这句话,则对str进行str += "\\"的时候,str的值直接变成了"\\"; SHGetPathFromIDList(lp, (LPWSTR)szPath); str2 = (LPWSTR)szPath;//文件夹路径 } /************************************************************************/ /*在文件夹路径下解析文件 把所需要的信息列在列表中(文件名,文件类型,文件大小,文件后缀)*/ /************************************************************************/ int row = m_list.GetItemCount(); CFileFind myFile; CString FilePath; CString root = str2;// CString str; if (root.Right(1) != "//") { root += "//"; } root += "*.*"; BOOL res = myFile.FindFile(root); while (res) { res = myFile.FindNextFile(); FilePath = myFile.GetFilePath(); if (myFile.IsDirectory() && !myFile.IsDots())// 找到的是文件夹 { FileSearch(FilePath);// 递归 } else if (!myFile.IsDirectory() && !myFile.IsDots())// 找到的是文件 { myFile.GetFilePath();//文件路径 myFile.GetFileName();//文件名 str.Format(_T("%dK"),myFile.GetLength()/1024);//文件大小 CString extName = GetExtName(myFile.GetFileName());//文件名的后缀 //获取文件类型信息 SHFILEINFO sfi = { 0 }; SHGetFileInfo(myFile.GetFileName(), 0, &sfi, sizeof(sfi), SHGFI_USEFILEATTRIBUTES | SHGFI_TYPENAME); //MessageBox((CString)sfi.szTypeName); m_list.InsertItem(row, _T("")); m_list.SetItemText(row, 0, myFile.GetFileName());//文件名称 m_list.SetItemText(row, 1, extName);//文件后缀 m_list.SetItemText(row, 2, (CString)sfi.szTypeName);//文件类型 m_list.SetItemText(row, 3, str);//文件大小 m_list.SetItemText(row, 4, _T("未解锁")); } }>}>//文件的查找 自写函数void CMFCApplication14Dlg::FileSearch(CString pszPath){ CFileFind ff; CString FilePath; if (pszPath.Right(1) != "\\") { pszPath += "\\"; } pszPath += "*.*"; BOOL res = ff.FindFile(pszPath); while (res) { res = ff.FindNextFile(); FilePath = ff.GetFilePath(); if (ff.IsDirectory() && !ff.IsDots())// 找到的是文件夹 { FileSearch(FilePath);// 递归 } else if (!ff.IsDirectory() && !ff.IsDots())// 找到的是文件 { //MoveFile--移动重命名 } } return;>}>//显示文件名的后缀CString CMFCApplication14Dlg::GetExtName(CString fileName){ int pos = fileName.Find(_T(".")); //获取 . 的位置 if (pos == -1){ //如果没有找到,直接返回该字符串 return fileName; } else{ return GetExtName(fileName.Mid(pos + 1)); //找到了的话,往深层遍历,直到最底层 }}
- 写的比较匆忙这里附源码
源码下载
1 0
- MFC获取电脑文件夹下文件的名称,类型,大小,后缀(附源码)
- 计算文件夹下文件的总大小
- 计算文件夹下文件的总大小
- fso获取文件夹下文件个数和显示文件名(无后缀)
- java获取文件夹下文件的数目
- MFC获取电脑硬盘序列号(附源码)
- MFC获取电脑硬盘序列号(附源码)
- 获取文件夹下文件列表
- 批处理 显示指定文件夹下文件的大小和时间
- MFC查找一个文件夹下文件的数目
- Linux下文件及目录的一些操作(附递归遍历目录源码)
- Delphi 获取指定目录下文件的大小
- 获取文件夹大小以及删除指定目录下文件及目录
- 获取指定文件夹下文件列表
- 读取文件夹下文件,获取文件名,重命名
- C++ 获取路径下文件、文件夹
- MFC获取整个文件夹的大小 (VS05, ascii字符集)
- MFC获取文件夹下的所有子文件夹名称
- log4j日志按分模块和分级输出到不同的文件中去
- 开发拾遗篇:安装VS2015
- (转载)C++中的Preprocess Compilation Linking
- maven常见错误
- MyEclipse环境下如何采用Maven导入ojdbc14.jar和ojdbc6.jar
- MFC获取电脑文件夹下文件的名称,类型,大小,后缀(附源码)
- php-fpm.conf配置信息
- Linux设备模型(1)_基本概念
- Android帮助文档本地打开慢的解决方案
- CSS+DIV实现鼠标经过背景变色 [onmouseover; onmouseout]
- 超不错的银灰色竖排折叠菜单
- linux服务器apache的配置文件路径
- 九章算法面试题22 扔棋子
- MySQL数据库性能进行优化三大绝招