1

我有一个 C++ 程序,它接受用户输入fopen以启动文件写入。有人可以帮我找到一个函数,该函数将返回 aFILE*并使用 Windows 特定版本mkdir来创建文件夹结构,fopen以便永远不会因为其中一个文件夹不存在而无法在指定位置打开新文件。非常感谢!

4

1 回答 1

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 );
于 2010-05-14T14:33:05.510 回答