MAX_PATH限制在Boost.Filesystem的
题
我想使用Boost.Filesystem的库来操纵路径,文件和目录。 我的问题是是路径长于MAX_PATH支持?
我知道在Win32API的,我们有解决办法“\\?\”,但它不是由像PathAppend和PathCombine基本功能的支持。
所以我在寻找有关MAX_PATH和Boost.FS任何有用的信息。
由于
UPD:我关心像路径追加所有操作,路径结合起来,等等(我在的Win32API的功能,但它们无法正常工作与路径超过MAX_PATH更长) 例如CreateFileW和DeleteFileW都支持路径比MAX_PATH更长。 可以Boost.FS是Win32API的效用函数的替代,如在SHLWAPI和SHELL32发现这通常不支持长路径
解决方案
事实是,Windows支持任何长度的路径,以及任何路径可被转换成字符串的窗口上。添加\\?\
需要在这样的情况下,但是这是“使一个串出一个给定的路径的”操作中的一部分。
据我所知,升压::文件系统做这错了窗户。
我不知道,如果一个修复计划。请参见这关于应该如何完成。
其他提示
可以操纵文件系统路径串具有或不具有Boost.Filesystem的任何长度。
MAX_PATH是Windows文件的API的限制。也就是说,你不能太长路径字符串传递到Windows的API。
例如,Boost.Filesystem的的remove函数将失败,超过MAX_PATH长度路径更长。你想Boost.Filesystem的做这样的事情改变当前目录下,并使用相对路径,保护MAX_PATH限制?我不这么认为其可能的。
<强> EDITED 强>
由于Boost.Filesystem的基于C ++字符串来实现,你不需要对路径长度担心。 Boost.Filesystem的不仅提供了路径字符串操作方法,而且文件系统的操作方法。你应该避免文件系统的方法,如果产生的路径太长。
我不知道要不要Boost.Filesystem的支持Unicode的Win32的路径,但你可以转换调用Win32文件API的决赛前路径ANSI到Unicode路径。