c++ - 如何在 Win32 中递归创建文件夹?

标签 c++ winapi directory

我正在尝试创建一个采用目录名称的函数(C:\foo\bar,或 ..\foo\bar\..\baz\\someserver\foo\bar),并根据需要创建目录,以便创建整个路径。

我自己正在尝试一个非常幼稚的实现,这似乎是一个字符串处理的噩梦。有 / vs \,有以 \\ 开头的网络共享的特殊情况(你也不能尝试 mkdir( ) 路径的前两层分别是机器名和共享名),并且路径中可以存在 \.\ 类型的废话。

是否存在在 C++ 中执行此操作的简单方法?

最佳答案

如果您不需要支持 Windows 2000 之前的 Windows 版本,您可以使用 SHCreateDirectoryEx function为了这。考虑一下:

int createDirectoryRecursively( LPCTSTR path )
{
    return SHCreateDirectoryEx( NULL, path, NULL );
}

// ...
if ( createDirectoryRecursively( T("C:\\Foo\\Bar\\Baz") ) == ERROR_SUCCESS ) {
   // Bingo!
} 

如果使用这样的 shell32.dll API 成为问题,您总是可以用其他东西(可能是手动循环)重新实现上面的 createDirectoryRecursively 函数。

关于c++ - 如何在 Win32 中递归创建文件夹?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1530760/

相关文章:

c++ - 将 char* 转换为 int

c++ - 在 C++ 或 C 中获取当前鼠标光标图像

c++ - 在 C++ 上获取帐户区分名称 AD

php - 获取目录 PHP 中的第一个文件

c++ - 用户定义类型的数组成员初始化

c++ - 为什么这个模拟中的摩擦力会使物体以不稳定的方式运行?

c++ - 到处都有差异的虚函数

c# - 合并不同语言的程序

php - PHP 的文件夹大小?

javascript - 将文件和文件夹信息保存到 localStorage