CreateDirectory GetCurrentDirectory 和SetCurrentDirectory
文章目錄
- CreateDirectory
- 函數功能
- 函數聲明
- 第一個參數(第一種情況絕對路徑)
- 第一個參數(第二種情況當前目錄)
- 第二個參數
- 返回值
- 注意:
- 代碼實現
- 絕對路徑
- 當前目錄
- GetCurrentDirectory
- 函數功能
- 函數聲明
- 第一個參數
- 第二個參數
- 返回值
- 代碼實現
- SetCurrentDirectory
- 函數功能
- 函數聲明
- 第一個參數:
- 返回值:
- 注意:
- 代碼實現
- `CreateDirectory`和`SetCurrentDirectory`相結合使用(打了一套組合拳):實現代碼下:
CreateDirectory
函數功能
創建一個新目錄
函數聲明
BOOL CreateDirectory(LPCTSTR lpPathName,LPSECURITY_ATTRIBUTES lpSecurityAttributes);第一個參數(第一種情況絕對路徑)
lpNewDirectory String,新目錄的名字。舉例:LPCSTR str = "c:\\TEST"
第一個參數(第二種情況當前目錄)
lpNewDirectory String,新目錄的名字。舉例:LPCSTR str = "TEST"
第二個參數
lpSecurityAttributes SECURITY_ATTRIBUTES,這個結構定義了目錄的安全特性——如果操作系統支持的話,安全屬性,一般設置為NULL即可
返回值
Long,如果正確創建,返回值為1,如果沒有正常創建文件夾,則返回0。會設置GetLastError
注意:
特別的:該函數每次調用時都只能創建一級文件夾,即文件夾中不能再包含子文件夾。
當希望創建含有子文件夾的文件夾時,可以先使用該函數創建一級文件夾,然后再使用該函數在一級文件夾下創建子文件夾。如:
希望創建:d:\\TEST\\temp
則:
LPCSTR str = "c:\\TEST";CreateDirectory(str, NULL);LPCSTR std = "c:\\TEST\\temp";CreateDirectory(std, NULL);代碼實現
絕對路徑
LPTSTR szDirPath = LPTSTR("c:\\dog");if (!CreateDirectory(szDirPath, NULL)) {LPCSTR a = "創建失敗";LPCSTR b = "再接再厲";MessageBox(NULL,a,b,MB_OK);return 0;}LPCSTR a = "創建成功";LPCSTR b = "厲害";MessageBox(NULL, a, b, MB_OK);LPCSTR str = "c:\\TEST";CreateDirectory(str, NULL);LPCSTR std = "c:\\TEST\\temp";CreateDirectory(std, NULL);當前目錄
LPCSTR str1 = "TEST";CreateDirectory(str1, NULL);if (!CreateDirectory(szDirPath, NULL)) {LPCSTR a = "創建失敗";LPCSTR b = "再接再厲";MessageBox(NULL, a, b, MB_OK);return 0;}LPCSTR a = "在當前目錄創建成功";LPCSTR b = "厲害";MessageBox(NULL, a, b, MB_OK);
GetCurrentDirectory
函數功能
在一個緩沖區中裝載當前目錄
函數聲明
因為此時我是用的是多字節字符集,所以 GetCurrentDirectory自動轉變為 GetCurrentDirectoryA
GetCurrentDirectoryA(_In_ DWORD nBufferLength,_Out_writes_to_opt_(nBufferLength,return + 1) LPSTR lpBuffer);第一個參數
nBufferLength Long,lpBuffer緩沖區的長度
第二個參數
lpBuffer String,指定一個預定義字串,用于裝載當前目錄
返回值
Long,裝載到lpBuffer的字節數。如nBufferLength的長度不夠,不足以容納目錄,則返回值是必要的緩沖區長度(要求至少這個長度),其中包括空中止字符。零表示失敗。會設置GetLastError
代碼實現
TCHAR szCurrentDirectory[MAX_PATH];DWORD dwCurDirPathlen;dwCurDirPathlen=GetCurrentDirectory(MAX_PATH, szCurrentDirectory);printf("%d", dwCurDirPathlen);if (dwCurDirPathlen == 0) {LPCSTR a = "獲取當前目錄失敗";LPCSTR b = "再接再厲";MessageBox(NULL, a, b, MB_OK);return 0;}LPCSTR a = "獲取當前目錄成功";LPCSTR b = "厲害";MessageBox(NULL, szCurrentDirectory, b, MB_OK);SetCurrentDirectory
函數功能
在開發軟件里,常常碰到要讀取當前目錄下的配置參數文件,或者打開當前目錄下別的程序來運行,那么就需要獲取當前進程的目錄位置,這就需要使用函數GetCurrentDirectory獲取當前進程所有在的目錄。同時也可以使用setcurrentdirectory函數來改變進程的當前目錄。
函數聲明
SetCurrentDirectoryA(_In_ LPCSTR lpPathName);第一個參數:
LPCTSTR lpPathName程序的目錄設置到地址
返回值:
此函數的返回值類型為Long,非零表示成功,零表示失敗。會設置GetLastError
注意:
應用程序終止時,工作目錄被還原為其原始位置(從其開始進程的目錄)。
允許 path 參數指定相對或絕對路徑信息。 相對路徑信息被解釋為相對于當前工作目錄。 若要獲取當前工作目錄,請參見 GetCurrentDirectory。
尾隨空格從 path 參數的結尾。CONFIG 目錄中的已取消。
path 參數不區分大小寫。
如果您要將目錄設置為裝有可移動媒體的驅動器(例如對于軟盤驅動器,為“A:”,對于 CD-ROM 驅動器,為“E:”),則可以通過使用 IsReady 屬性確定該驅動器是否已就緒。
代碼實現
LPCSTR a = "c:\\";if (!SetCurrentDirectory(a)) {LPCSTR a = "設置當前目錄失敗";LPCSTR b = "再接再厲";MessageBox(NULL, a, b, MB_OK);}LPCSTR a1 = "設置當前目錄成功";LPCSTR b = "厲害";MessageBox(NULL, a1, b, MB_OK);CreateDirectory和SetCurrentDirectory相結合使用(打了一套組合拳):實現代碼下:
LPCSTR CurrentDirectory = "c:\\";if (!SetCurrentDirectory(CurrentDirectory)) {LPCSTR a = "設置當前目錄失敗";LPCSTR b = "再接再厲";MessageBox(NULL, a, b, MB_OK);}LPCSTR CurrentDirectory1 = "設置當前目錄成功";LPCSTR CurrentDirectoryTable = "厲害";MessageBox(NULL, CurrentDirectory1, CurrentDirectoryTable, MB_OK);LPCSTR str1 = "TEST";if (!CreateDirectory(str1, NULL)) {LPCSTR a = "創建失敗";LPCSTR b = "再接再厲";MessageBox(NULL, a, b, MB_OK);return 0;}LPCSTR createDirectory = "在當前目錄創建成功";LPCSTR b = "厲害";MessageBox(NULL, createDirectory, b, MB_OK);
備注:
2021年堅持學寫博客第10天(學習兩個windows API) 尋夢SS
明日目標:
windows核心編程API函數
總結
以上是生活随笔為你收集整理的CreateDirectory GetCurrentDirectory 和SetCurrentDirectory的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: GetDiskFreeSpace 和
- 下一篇: GetModuleFileName