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并将前缀添加到路径.