在時,經常有一些針對目錄的操作,如打開目錄對話框選擇一個目錄,直接創建多級目錄,直接刪除多級目錄,判斷某個目錄是否存在等。本文就這些問題給出編程實現方法,並給出詳細的程序代碼,供各位編程愛好者參考。
一、判斷目錄是否存在:
C++ Builder中提供了檢查文件是否存在的函數FileExists,但沒有提供檢查目錄是否存在的函數,我們可以用Windows API函數FindFirstFile實現這個功能。程序實現如下:
設char *Dir為帶判斷的目錄
bool Exist; // 最後結果,表示目錄是否存在
if(Dir[strlen(Dir)]=='\\')Dir[strlen(Dir)-1]='\0'; // 先刪除最後的“\”
WIN32_FIND_DATA wfd; // 查找
HANDLE hFind=FindFirstFile(Dir,&wfd);
if(hFind==INVALID_HANDLE_VALUE)Exist=false; // 沒有找到配備,目錄肯定不存在
else
{
if(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) // 檢查找到的結果是否目錄
Exist=true; // 是目錄,目錄存在
else
Exist=false; // 是目錄,目錄不存在
FindClose(hFind);
}
二、打開目錄選擇對話框選擇一個目錄:
大多專業軟件在要求輸入目錄的編輯框旁都放了一個按鈕,點擊後打開一個目錄窗口,很多編程愛好者也希望能掌握這個方法。實現這個功能要調用Windows API函數SHBrowseForFolder,完整聲明為WINSHELLAPI LPITEMIDLIST WINAPI SHBrowseForFolder(LPBROWSEINFO lpbi),返回一個ITEMIDLIST類型的指針,通過這個指針調用函數SHGetPathFromIDList可以確定所選擇的目錄的全名稱。入參為BROWSEINFO結構的指針,這個結構較為復雜,成員如下所示: