如何在C ++中recursion创build一个超过MAX_PATH的目录?

如何在C ++中recursion创build一个超过MAX_PATH的目录?,第1张

概述如何在C ++中recursion创build一个超过MAX_PATH的目录

我一直在试图创build一个文件夹recursion,这意味着当我input

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

它会创build每个文件夹,直到最后一个条目。 我试过SHCreateDirectoryExW,但是那个不接受超过MAX_PATH的path,甚至没有特殊的前缀。 是否有一个已经存在的function,这与高达32K字符,或者我必须自己创build一个? 我可以创build一个普通的文件夹,因为上面的文件夹存在,就好了。

与目录的Sed错误

具有属性的批目录到CSV中

windows 7:cmd.exe:设置启动目录(在cmd.exe的链接中)

目录在windows上显示为文件

检查文件是否是C中的特定types

关于Vim的三个问题

什么时候是一个目录实际上归类为在windows上“访问”?

PHP mkdir(),chmod()和windows

如何监视windows目录的更改?

什么是在windows上使用Python的虚假OSError,13(EACCES)的一个很好的解决scheme

您需要分别在路径上创建每个目录。 将路径解析到其目录组件中,然后逐个处理它们。 当你遇到一个不存在的目录时,创建它,然后进入下一层。

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

将路径拆分为其组件。 检查每个组件是否存在,或者逐一创建,同时将应用程序当前目录设置为该目录。 这样你就不会处理完整的路径,一次只能处理一个(相对)组件。

所以像这样的伪代码:

split_path(); set_cwd(root); for (i = 0; i < number_of_components; ++i) { if (!does_path_exits(component[i])) makedir(component[i]); set_cwd(component); }

最后,我屈服于Boost,主要是因为它只需要添加一行。

std::tstring wIDePath = WIDEPATH_PREFIX; wIDePath += CStringW(filePath.c_str()); return (boost::filesystem::create_directorIEs(wIDePath));

我只是将前缀附加到我的文件路径,并发送它来提高。

总结

以上是内存溢出为你收集整理的如何在C ++中recursion创build一个超过MAX_PATH的目录?全部内容,希望文章能够帮你解决如何在C ++中recursion创build一个超过MAX_PATH的目录?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1154633.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存