如何在C++中递归创建超过MAX_PATH的目录?

Boe*_*hmi 2 c++ windows directory winapi

我一直在尝试递归创建一个文件夹,这意味着当我输入

"C:\\test\\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaabaababbaabababaabbababababaabababbabab\\22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222\\12345");

它将创建直到最后一个条目为止不存在的每个文件夹。我尝试过 SHCreateDirectoryExW,但该方法不接受超过 MAX_PATH 的路径,即使带有特殊前缀也不接受。是否有一个现有的函数可以使用最多 32k 个字符执行此操作,还是我必须自己创建一个函数?我可以创建一个普通文件夹,只要上面的文件夹存在,就可以了。

Dav*_*nan 5

您需要在路径上单独创建每个目录。将路径解析为其目录组件,然后一一处理它们。当遇到不存在的目录时,创建它,然后继续向下一级。

这里需要使用的API函数是CreateDirectory. 将其传递给您需要创建的目录的完整路径。您需要使用 API 的 Unicode 版本,并使用前缀\\?\来禁用MAX_PATH长度限制。