zoukankan      html  css  js  c++  java
  • 文件搜索查找功能VC++

    1.搜索指定文件夹下的文件名和路径

    #undef UNICODE  
           
    #include <iostream>  
    #include <string>  
    #include <vector>  
    #include <memory>  
    #include <cstring>  
           
    #include <windows.h>  
           
    std::shared_ptr<std::vector<std::string> >  fileList(const std::string& folder_path)  
    {  
        static std::shared_ptr<std::vector<std::string> >   
            folder_files(new std::vector<std::string>); //返回指针, 需要迭代使用  
           
        WIN32_FIND_DATA FindData;  
        HANDLE hError;  
           
        int file_count(0);  
        std::string file_path(folder_path); //路径名  
        std::string full_file_path; //全路径名   
           
        file_path.append("/*.*");  
        hError = FindFirstFile(file_path.c_str(), &FindData);  
        if (hError == INVALID_HANDLE_VALUE) {  
            std::cout << "failed to search files." << std::endl;  
            return nullptr;  
        }  
        while(FindNextFile(hError, &FindData))  
        {  
            //过虑".", "..", "-q"  
            if(0 == strcmp(FindData.cFileName, ".") ||   
                0 == strcmp(FindData.cFileName, "..") ||   
                0 == strcmp(FindData.cFileName, "-q"))  
            {  
                continue;  
            }  
           
            //完整路径  
            full_file_path.append(folder_path);  
            full_file_path.append("/");  
            full_file_path.append(FindData.cFileName);  
            ++file_count;  
           
            if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){  
                //std::cout << file_count << " " << full_file_path << "<Dir>" << std::endl;  
                fileList(full_file_path);  
            }else{  
                folder_files->push_back(full_file_path);  
                //std::cout << file_count << " " << full_file_path << std::endl;  
            }  
            full_file_path.clear(); //清空目录  
        }  
        return folder_files;  
    }  
           
    int main(void)   
    {  
        std::shared_ptr<std::vector<std::string> > folder_files;  
        folder_files = fileList("E:/bf");  
        if (folder_files) {  
            for (size_t i=0; i != folder_files->size(); ++i) {  
                std::cout << i+1 << " : " << (*folder_files)[i] << std::endl;  
            }  
        }  
        return 0;  
    }
    View Code

    #include<afx.h>
    #include<stdio.h>
    #include<string.h>
    #include<iostream>
    using namespace std;
    int _tmain(int argc, _TCHAR* argv[])
    {
        TCHAR  filePath[255]=L"*.*";
        CFileFind finder;
        BOOL bFinderResult = finder.FindFile(filePath);
        //std::cout << filePath << std::endl;
        while (bFinderResult!=false)
        {
            bFinderResult=finder.FindNextFileW();
            CString szRepeter = finder.GetFileName();
            //const int iSize = szRepeter.GetLength();
            char bufFileName[255];
            WideCharToMultiByte(0, 0, szRepeter, 255, bufFileName, 255, NULL, false);
            //fFileName = (LPCTSTR)szRepeter;
            std::cout << bufFileName << std::endl;
        }
        system("pause");
        return 0;
    }
    //注意要设置共享MFC中使用.

    更多可以参看:http://www.jizhuomi.com/software/340.html

  • 相关阅读:
    tkinter 写一个简易的ide
    Vue+webpack项目配置便于维护的目录结构
    爬虫:输入网页之后爬取当前页面的图片和背景图片,最后打包成exe
    linux vue项目+npm run build + nginx
    Android 进阶自定义 ViewGroup 自定义布局
    Android 属性动画框架 ObjectAnimator、ValueAnimator ,这一篇就够了
    桶排序
    Test CMake run finished with errors
    搭建私人云盘
    Java中 / 和 %
  • 原文地址:https://www.cnblogs.com/lwngreat/p/4268232.html
Copyright © 2011-2022 走看看