2011年3月9日 星期三

C/C++:計算指定資料夾的檔案數

int count_file_num_in_a_folder( char* target_folder ){
    int count=-1;                //檔案的counter
    char szDir[128];           //要讀取的資料夾的位址。 
    WIN32_FIND_DATA FileData;    //指著目前讀取到的File的指標。
    HANDLE hList;                //指著要讀取的資料夾的指標。
    sprintf(szDir, "%s\\*",target_folder );
    if ( (hList = FindFirstFile(szDir, &FileData))==INVALID_HANDLE_VALUE )
        cout<<"No directories be found."<<endl<<endl;
    else {
        while (1) {
            if (!FindNextFile(hList, &FileData)) {
                if (GetLastError() == ERROR_NO_MORE_FILES)
                    break;
            }
            count++;
        }
    }
    FindClose(hList);
    return count;
}
用途:
計算指定資料夾裡的檔案個數。
用法:
/*
char folder_adderss[128]="..\\testing_folder\\";
//testing_folder為指定資料夾的名稱
count_file_num_in_a_folder(folder_address);
*/
附註:
若testing_folder裡面有5個資料夾、3個檔案,則此函式會回傳5+3=8。而count會設成"-1"是因為FindFirstFile"會將[上層目錄]也是為檔案,因此若不想將[上層目錄]也視為檔案的話記得要將count設成"-1";否則,則設為0。

沒有留言:

張貼留言