
我一直在试图创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的目录?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)