1. 程式人生 > >MFC用CreateDirectory建立檔案目錄

MFC用CreateDirectory建立檔案目錄

CreateDirectory這個函式的作用是建立一個新的目錄。如果底層檔案系統支援檔案和目錄上的安全描述,該功能可將指定的安全描述到新的目錄。

函式原型:

BOOL CreateDirectory(
  LPCTSTR lpPathName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

引數:

    pPathName:長指標,指向一個空結束的字串,該字串指定要建立的目錄的路徑。有一個預設的字串大小限制為MAX_PATH字元的路徑。此限制是關係到這個函式是如何解析路徑。字串的長度不超過MAX_PATH。

    lpSecurityAttributes:忽略,一般設定為NULL。

返回值:
    非零表示成功,零表示失敗。若想獲得更多的錯誤資訊,呼叫GetLastError函式。

備註:
    這個函式不是遞迴的。它可以在一個路徑中建立唯一的最終目錄。也就是說,如果父目錄或中間目錄不存在,該函式將失敗並顯示錯誤訊息ERROR_PATH_NOT_FOUND。

    一些檔案系統,如NTFS檔案系統,支援壓縮或個別檔案和目錄加密。上卷格式化為這樣的檔案系統,一個新的目錄繼承父目錄的壓縮和加密屬性。

--->>>

    從備註可知,該函式只能建立一級目錄,當根目錄或者中間目錄不存在時,該函式將不起作用。所以假如我們要建立二級以上目錄時,應該分開來一步步建立。

例如:我們要建立:D:\\一級資料夾\\二級資料夾\\...

CString str = "D:\\一級資料夾";
CreateDirectory(str, NULL);
str += "\\二級資料夾";
CreateDirectory(str, NULL);
以此類推。

在建立新的目錄之前,我們也可以先判斷該目錄是否已經存在,例如:

CString str = "D:\\一級資料夾";
if (!PathIsDirectory(str))
{
    ::CreateDirectory(str, NULL);//建立目錄,已有的話不影響
}
str += "\\二級資料夾";
if (!PathIsDirectory(str))
{
    ::CreateDirectory(str, NULL);//建立目錄,已有的話不影響
}
在呼叫PathIsDirectory()函式時,需要包含以下標頭檔案與庫函式:
#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")