C/C++遍曆Windows檔案夾下的所有檔案

來源:互聯網
上載者:User

標籤:目錄   檔案結構   direct   解決   unicode   and   tool   from   directory   

   因為檔案夾中往往包含檔案和檔案夾。想要遍曆所有的檔案,必須遍曆檔案夾中所有的檔案夾。很顯然,這個描述滿足遞迴的兩個要素:(1)問題的規模在不斷的縮小,且新問題的模式與舊問題相同。很顯然檔案夾中含有子檔案夾同樣需要遍曆。(2)含有簡單的終止條件,即遇到檔案夾下再無檔案夾停止。

     C++遍曆檔案夾下所有檔案如下:

int osmgpxPaser::GetAllgpxFilepathFromfolder(char*  Path){    char szFind[MAX_PATH];    WIN32_FIND_DATA FindFileData;    strcpy(szFind,Path);    strcat(szFind,"\\*.*");    HANDLE hFind=FindFirstFile(szFind,&FindFileData);    if(INVALID_HANDLE_VALUE == hFind)           return -1;    do    {        if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)        {            if(strcmp(FindFileData.cFileName,".")!=0 && strcmp(FindFileData.cFileName, "..")!=0)            {                //發現子目錄,遞迴之                char szFile[MAX_PATH] = {0};                strcpy(szFile,Path);                strcat(szFile,"\\");                strcat(szFile,FindFileData.cFileName);                GetAllgpxFilepathFromfolder(szFile);            }        }        else        {            //找到檔案,處理之            std::cout << lpPath << "\\" << FindFileData.cFileName << std::endl;        }    }while(FindNextFile(hFind,&FindFileData));    FindClose(hFind);    return 0;}

這裡不得不說一下FindFirstFile()函數。使用它必須引用windows.h標頭檔,FindFirstFile第一個參數需要一個路徑,但要寫*.*,表示從所有檔案中找到的第一個.第二個參數用於隱藏檔資訊,找到的檔案的檔案結構被記錄在WIN32_FIND_DATA結構體裡。

另外,如果直接編譯以上代碼可能會出現以下錯誤: error C2664: “FindFirstFileW”: 不能將參數 1 從“char [261]”轉換為“LPCWSTR” ,解決方案為:

把工程設定裡去掉UNICODE宏定義:項目->XXX屬性->配置屬性->常規->字元集 改為 “未設定” 就去掉了unicode支援,不過應該回報一個警告。

或在#include <windows.h>之前加上一句 #undef UNICODE

C/C++遍曆Windows檔案夾下的所有檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.