我想使用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路径。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top