回覆列表
  • 1 # 使用者3926722064098

    CString FileName[1000];

    int i = 0;

    void find(CString lpPath)

    {

    CString szFind;

    CString szFile;

    WIN32_FIND_DATA FindFileData;

    szFind = lpPath;

    szFind += L"\\*.*"; //這裡如果改成*.txt,就只能遍歷指定資料夾裡面的TXT,不會遍歷子資料夾的。

    HANDLE hFinds =::FindFirstFile(szFind,&FindFileData);

    if(INVALID_HANDLE_VALUE == hFinds) return;

    while(TRUE)

    {

    if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

    {

    if(FindFileData.cFileName[0]!=".")//一個目錄中,.表示的是當前目錄, ..表示的是上層目錄,所以這裡過濾它

    {

    //如果不是.號的目錄,就進去又遍歷。當然如果你不需要這個,就把下面第四行程式碼屏掉

    szFile = lpPath;

    szFile += L"\\";

    szFile += FindFileData.cFileName;

    find(szFile); //遞迴遍歷子資料夾

    }

    }

    else

    {

    //上面判斷了,如果不是資料夾,那就肯定是檔案了,把這個檔案記錄起來

    CString str = lpPath + L"\\"+ FindFileData.cFileName;

    FileName[i++] = str; //得到檔案,儲存到一個CString全域性陣列中

    }

    if(!FindNextFile(hFinds,&FindFileData)) break;

    }

    FindClose(hFinds);

    }

    就是這樣子就行了

  • 中秋節和大豐收的關聯?
  • 拔河比賽裁判的要求有哪些?