首页 > 代码库 > windows下文件查找

windows下文件查找

今天再看树的结构时,想起文件文件的储存就是一个典型的树结构,因此基于MFC提供的函数,写了一个关于文件查找的代码。

  • 因为需要用到MFC的类,所以在建立控制台项目时,需要关联MFC;
  • 该代码删除了由于关联MFC而生成的一些其他代码,保留_tmain()函数即可;
  • 采用宽字符,因此使用了wcout输出

功能:

  收缩指定磁盘中的文件,可以进行简单的模糊查找。

 1 #include "stdafx.h"
 2 #include "ListWindowsFile.h"
 3 
 4 #ifdef _DEBUG
 5 #define new DEBUG_NEW
 6 #endif
 7 
 8 
 9 using namespace std;
10 
11 int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])
12 {
13     int nRetCode = 0;
14     setlocale(LC_ALL, "chs");
15         //查找F盘中文件名中含有RewindBoard的文件
16     CString path = TEXT("F:\\");
17     CString name = TEXT("RewindBoard");
18     FindFileWindows(path, name);
19     system("pause");
20         return nRetCode;
21 }
22 
23 void FindFileWindows(CString BasePath, CString object)
24 {
25     CFileFind Finder;
26     CString PreFilePath;
27     CString NextFullName;
28     CString FileName;
29 
30     PreFilePath = BasePath + TEXT("*.*");
31     int iResult = Finder.FindFile(PreFilePath);  //遍历整个文件夹
32 
33     while (0 != iResult)
34     {
35         iResult = Finder.FindNextFileW();
36 
37         //判断是否为文件夹
38         if(Finder.IsDirectory() && !Finder.IsDots())
39         {
40             NextFullName = Finder.GetFilePath();
41             FileName = Finder.GetFileName();
42             if (FileName.Find(object, 0) != -1)
43             {
44                 std::wcout << (LPCTSTR)Finder.GetFilePath() << std::endl;
45             }
46             NextFullName += TEXT("\\");
47             FindFileWindows(NextFullName, object);
48         }
49         else  //寻找该目录中是否有该文件
50         {
51             FileName = Finder.GetFileName();
52             if (FileName.Find(object, 0) != -1)
53             {
54                 std::wcout << (LPCTSTR)Finder.GetFilePath() << std::endl;
55             }
56         }
57     }
58 }

 

运行结果:

技术分享

 

windows下文件查找