【发布时间】:2011-02-19 13:19:27
【问题描述】:
我有一个 C++ 程序,它接受用户输入 fopen 以启动文件写入。有人可以帮我找到一个函数,该函数将返回 FILE* 并使用 Windows 特定版本的 mkdir 以便为 fopen 创建文件夹结构,以便永远不会在指定位置打开新文件,因为其中一个文件夹不存在。非常感谢!
【问题讨论】:
我有一个 C++ 程序,它接受用户输入 fopen 以启动文件写入。有人可以帮我找到一个函数,该函数将返回 FILE* 并使用 Windows 特定版本的 mkdir 以便为 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 );
【讨论】: