2010-05-14 174 views
1

我有一個C++程序,用於輸入fopen用戶輸入以啓動文件寫入。有人能幫我找到一個函數,它將返回一個FILE*並使用Windows特定版本mkdir爲了創建fopen的文件夾結構永遠不會在指定位置打開一個新文件,因爲其中一個文件夾不存在。謝謝一堆!創建新文件夾,如果它們不存在fopen

回答

2

在windows API中有一個方法MakeSureDirectoryPathExists,在dbghelp.h中聲明。它遞歸地創建目錄,所以我想這就是你所追求的。 但是,如果你有寫權限到某個目錄,那麼你就沒有辦法確保這個「永不失敗」,因爲它也取決於權限等。

編輯:這是一些虛擬示例代碼;但它使用GetProcAddress,因爲我在寫代碼時找不到dbghelp頭。

typedef BOOL (WINAPI * CreateDirFun) (__in PCSTR DirPath); 

HMODULE h = LoadLibrary("dbghelp.dll"); 
CreateDirFun pFun = (CreateDirFun) GetProcAddress(h, "MakeSureDirectoryPathExists"); 
(*m_pFun)(psPath)) 
CreateDirectory(psPath); 
FreeLibrary(h); 
+0

那麼,這正是我所尋找的。再次感謝! – Gbps 2010-05-14 14:43:11

+0

我認爲使用SHCreateDirectoryEX會更有意義。 – Luke 2010-05-15 12:41:50

+1

MSDN明確規定SHCreateDirectoryEx:「此功能可通過Windows XP Service Pack 2(SP2)和Windows Server 2003獲得。它可能會在後續版本的Windows中更改或不可用。」因此,如果程序將分佈在許多用戶中,那麼這是一個不好的選擇。如果這個功能是隻能由作者自己使用的小工具的一部分,那麼這可能是一個不錯的選擇。 – truthseeker 2012-06-14 08:02:58

相關問題