【轉(zhuǎn)】 C++:用CreateDirectory創(chuàng)建文件目錄(windows)

CreateDirectory這個函數(shù)的作用是創(chuàng)建一個新的目錄。如果底層文件系統(tǒng)支持文件和目錄上的安全描述,該功能可將指定的安全描述到新的目錄。

//函數(shù)原型
BOOL CreateDirectory(
  LPCTSTR lpPathName,
  LPSECURITY_ATTRIBUTES lpSecurityAttributes
);

參數(shù):

  • pPathName:長指針,指向一個空結(jié)束的字符串,該字符串指定要創(chuàng)建的目錄的路徑。有一個默認的字符串大小限制為MAX_PATH字符的路徑。此限制是關(guān)系到這個函數(shù)是如何解析路徑。字符串的長度不超過MAX_PATH。
  • lpSecurityAttributes:忽略,一般設(shè)置為NULL。

返回值:

  • 非零表示成功,零表示失敗。若想獲得更多的錯誤信息,調(diào)用GetLastError函數(shù)。

備注:
這個函數(shù)不是遞歸的。它可以在一個路徑中創(chuàng)建唯一的最終目錄。也就是說,如果父目錄或中間目錄不存在,該函數(shù)將失敗并顯示錯誤消息ERROR_PATH_NOT_FOUND
一些文件系統(tǒng),如NTFS文件系統(tǒng),支持壓縮或個別文件和目錄加密。上卷格式化為這樣的文件系統(tǒng),一個新的目錄繼承父目錄的壓縮和加密屬性。

從備注可知,該函數(shù)只能創(chuàng)建一級目錄,當根目錄或者中間目錄不存在時,該函數(shù)將不起作用。所以假如我們要創(chuàng)建二級以上目錄時,應(yīng)該分開來一步步創(chuàng)建。

例如:我們要創(chuàng)建:D:\一級文件夾\二級文件夾\...

CString str = "D:\\一級文件夾";
CreateDirectory(str, NULL);
str += "\\二級文件夾";
CreateDirectory(str, NULL);

以此類推。
在創(chuàng)建新的目錄之前,我們也可以先判斷該目錄是否已經(jīng)存在,例如:

CString str = "D:\\一級文件夾";
if (!PathIsDirectory(str))
{
    ::CreateDirectory(str, NULL);
}
str += "\\二級文件夾";
if (!PathIsDirectory(str))
{
    ::CreateDirectory(str, NULL);
}
在調(diào)用PathIsDirectory()函數(shù)時,需要包含以下頭文件與庫函數(shù):
#include "shlwapi.h"
#pragma comment(lib,"shlwapi.lib")

轉(zhuǎn)自:http://blog.csdn.net/ccfxue/article/details/51597403

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容