如何创建超过MAX_PATH的目录

sth*_*ers 5 c# windows max-path

出于测试目的,我想在磁盘上创建一个超过Windows MAX_PATH限制的目录.我怎样才能做到这一点?

(我尝试过Powershell,cmd,windows explorer =>它已被阻止.)

编辑: 使用ZetaLongPaths库中的ZlpIOHelper可以实现这一点,而标准的Directory类会抛出可怕的异常:

        static void Main(string[] args)
    {
        var path = @"d:\temp\";
        var dirName = "LooooooooooooooooooooooooooooooooooooooooooooongSubDirectory";
        while (path.Length <= 280)
        {
            path = Path.Combine(path, dirName);
            ZlpIOHelper.CreateDirectory(path); //Directory.CreateDirectory(path);
        }
        Console.WriteLine(path);
        Console.ReadLine();
    }
Run Code Online (Sandbox Code Playgroud)

Col*_*ith 12

在WIN32中,您需要使用特殊的"\\?\"前缀来允许更长的文件名.

请参阅:http://msdn.microsoft.com/en-us/library/aa365247.aspx

对于文件I/O,路径字符串的"\\?\"前缀告诉Windows API禁用所有字符串解析并将其后面的字符串直接发送到文件系统.例如,如果文件系统支持大型路径和文件名,则可以超过Windows API强制执行的MAX_PATH限制.有关正常最大路径限制的详细信息,请参阅上一节"最大路径长度限制".

当您使用C#时,请尝试使用此库,这将节省您必须对WIN32文件API执行所有PInvokes并将前缀添加到路径.