1
我有一個C++程序,用於輸入fopen
用戶輸入以啓動文件寫入。有人能幫我找到一個函數,它將返回一個FILE*
並使用Windows特定版本mkdir
爲了創建fopen
的文件夾結構永遠不會在指定位置打開一個新文件,因爲其中一個文件夾不存在。謝謝一堆!創建新文件夾,如果它們不存在fopen
我有一個C++程序,用於輸入fopen
用戶輸入以啓動文件寫入。有人能幫我找到一個函數,它將返回一個FILE*
並使用Windows特定版本mkdir
爲了創建fopen
的文件夾結構永遠不會在指定位置打開一個新文件,因爲其中一個文件夾不存在。謝謝一堆!創建新文件夾,如果它們不存在fopen
在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);
那麼,這正是我所尋找的。再次感謝! – Gbps 2010-05-14 14:43:11
我認爲使用SHCreateDirectoryEX會更有意義。 – Luke 2010-05-15 12:41:50
MSDN明確規定SHCreateDirectoryEx:「此功能可通過Windows XP Service Pack 2(SP2)和Windows Server 2003獲得。它可能會在後續版本的Windows中更改或不可用。」因此,如果程序將分佈在許多用戶中,那麼這是一個不好的選擇。如果這個功能是隻能由作者自己使用的小工具的一部分,那麼這可能是一個不錯的選擇。 – truthseeker 2012-06-14 08:02:58