我在文件夹路径中有几个层级。当路径超过256时,我无法创建其中的子文件夹或文件。是否有可能构建超过这个长度的路径?
有人能帮我解决吗?
\\?\
前缀,并使用API的Unicode版本。robocopy
(随Windows Vista和7打包,但也适用于XP),它支持长路径,您可以在更高的文件夹中创建文件/子文件夹,然后使用 robocopy 将子文件夹移动到其所需的更深的文件夹树位置。MAX_PATH
,即260。有一些Unicode API可以让您超越260的限制。在此函数的ANSI版本中,名称限于MAX_PATH个字符。要将此限制扩展到32,767个宽字符,请调用该函数的Unicode版本并在路径前面添加
\\?\
。有关详细信息,请参阅命名文件。
这是对上面答案的补充。我从微软官方文档中提取了我认为相关的摘要:
最大路径长度限制
在 Windows API(有一些例外情况)中,路径的最大长度为 MAX_PATH,定义为 260 个字符。本地路径按以下顺序结构化:驱动器号、冒号、反斜杠、由反斜杠分隔的名称组件和终止空字符。
例如:"D:\some 256-character-path-string" -> 256
使用长路径
Windows API 有许多函数也有 Unicode 版本,允许最大总路径长度为 32,767 个字符的扩展长度路径。
要指定扩展长度路径,请使用“\?”前缀。例如,“\?\D:\very long path”。
相对路径
相对路径始终限制为最多 MAX_PATH 个字符。
在 Win10 中启用长路径
从 Windows 10.1607 开始,常见的 Win32 文件和目录函数已删除 MAX_PATH 限制。
但是,您必须选择新行为。
Delphi 用户警告:
IOUtils 存在问题。它不能与 Max_Path 结合使用。它在所有地方都使用 InternalCheckDirPathParam!