最近做專案的時候,希望程式在執行前,刪除某個資料夾的快取檔案。手動刪除太麻煩,希望用指令碼實現,於是寫了下面的程式碼.


int DeleteAllFile(char *to_search) {
    long handle;                                                    //用於查詢的控制代碼;
    struct _finddata_t fileinfo;                                    //儲存檔案資訊的結構體;
    handle = _findfirst(to_search, &fileinfo);                    //第一次查詢;
    if (handle == -1)
    {
        return -1;
    }                                                               //沒有找到就返回-1;
    printf("%s\n", fileinfo.name);                                  //列印找到的檔案的檔名;
    while (!_findnext(handle, &fileinfo))
    {

        string filePath = ".\\store\\" + string(fileinfo.name);
        cout << filePath << endl;
        printf("DELETE: %s\n", filePath.c_str());
        DeleteFileA(filePath.c_str());      //DeleteFileA的引數是char*
    }
    _findclose(handle);
    return 0;
}

呼叫的方法是DeleteAllFile(“.\store\*.*”);
這裡用的當前目錄下的相對路徑,查詢的是store資料夾中所有型別的檔案。
如果要查詢某一型別的檔案,比如txt,只需要把引數改為“.\store\*.txt”。