如何在路径长度大于256的窗口中创建目录

时间:2011-08-09 13:13:17

标签: windows path directory

我在文件夹路径中有几个级别的目录。当路径超过256时,我无法从中创建子文件夹或文件。有没有机会建立超过这个长度的路径。  任何人都可以帮助我。

4 个答案:

答案 0 :(得分:6)

实际上,路径字符串的限制是260个字符。如今,底层操作系统可以支持更长的路径名up to 32,767 characters。要命名具有长名称的路径,您需要使用魔术\\?\前缀,并使用API​​的Unicode版本。

但是,许多工具不支持这么长的名字。这种工具的一个典型示例是资源管理器,它不允许您创建名称长度超过260个字符的对象。因此,我强烈建议你避免创建如此长的名字 - 从长远来看这样做会让你心痛。

答案 1 :(得分:2)

这应该让你开始:http://msdn.microsoft.com/en-us/library/aa365247%28v=vs.85%29.aspx#maxpath

可悲的是,这是一个我认为不会很快消失的问题,所以你应该熟悉这些东西。

顺便说一句,如果您可以访问robocopy(包含在Windows Vista和7中,但也可用于XP),它支持长路径,您可以在更高的位置创建文件/子文件夹up文件夹,然后使用robocopy将子文件夹移动到文件夹树中更深的所需位置。

答案 2 :(得分:1)

根据此处的文档http://msdn.microsoft.com/en-us/library/Aa365247,最大长度实际上约为32,000,但大多数Windows API仍将您限制为MAX_PATH,即260.有一些unicode API可以让您超越260限制。

请参见此处http://msdn.microsoft.com/en-us/library/aa363856

  

在此函数的ANSI版本中,名称仅限于MAX_PATH字符。要将此限制扩展为32,767个宽字符,请调用函数的Unicode版本并将\\?\添加到路径中。有关更多信息,请参阅命名文件。

答案 3 :(得分:0)

这是上述答案的附录。我从Microsoft的官方文档中仅提取了我认为相关的摘要:

最大路径长度限制
在Windows API中(某些例外情况),路径的最大长度为MAX_PATH, 定义为260个字符。本地路径按以下顺序构造: 驱动器号,冒号,反斜杠,由反斜杠分隔的名称组成部分以及终止的空字符。
示例:“ D:\ some 256个字符的路径字符串”-> 256

使用长路径
Windows API具有许多功能,它们也具有Unicode版本,以允许扩展长度的路径,最大总路径长度为32,767个字符。
要指定扩展长度的路径,请使用“ \?\”前缀。例如,“ \?\ D:\ very long path”。

相对路径
相对路径始终限制为总共MAX_PATH个字符。

在Win10中启用长路径
从Windows 10.1607开始,MAX_PATH限制已从常见的Win32文件和目录功能中删除。
但是,您必须选择加入新行为。

摘自Microsoft文档:
https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maximum-path-length-limitation


针对Delphi用户的警告:
IOUtils中存在问题。不能与Max_Path一起使用。它在各处使用InternalCheckDirPathParam!

详细信息:TDirectory.GetDirectoryRoot does not handle correctly paths of Max_Path characters