C#删除具有长路径的文件夹

Jam*_*mie 16 c# directory

我正在尝试删除文件夹,并且由于包含长路径的文件夹,删除失败.我认为我需要使用其他东西而不是dir.Delete(真),任何人之前都穿过这座桥?

非常感谢

 try
{
 var dir = new DirectoryInfo(@FolderPath);
 dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
 dir.Delete(true);
}
catch (IOException ex)
{
 MessageBox.Show(ex.Message);
}
Run Code Online (Sandbox Code Playgroud)

这是有问题的路径:\ server\share\dave\Private\Careers\Careers Ed\Fun Careers Education\Chris's not used used 2006 to07\old 4.Careers Area Activity Week 1 30.10.06 or 6.11.06 or 13.11.06职业水平和职业资源简介\职业领域和职位级别教师帮助表[1] .doc

Jam*_*ell 11

在Windows API中,路径的最大长度为MAX_PATH,定义为260个字符.本地路径按以下顺序构成:驱动器号,冒号,反斜杠,由反斜杠分隔的名称组件以及终止空字符.例如,驱动器D上的最大路径是"D:\某个256个字符的路径字符串<NUL>",其中" <NUL>"表示当前系统代码页的不可见的终止空字符.(此处使用字符<>是为了清晰可见,并且不能成为有效路径字符串的一部分.)[MSDN]

多个函数的Unicode版本允许最大路径长度约为32,000个字符,由长度最多255个字符的组件组成.要指定该类型的路径,请使用"\\?\"前缀.最大路径为32,000个字符是近似值,因为"\\?\"前缀可以扩展为更长的字符串,并且扩展适用于总长度.

例如,"\\?\D:\<path>".要指定此类UNC路径,请使用"\\?\UNC\"前缀.例如,"\\?\UNC\<server>\<share>".这些前缀不会用作路径本身的一部分.它们表明路径应该以最小的修改传递给系统,这意味着您不能使用正斜杠来表示路径分隔符,也不能使用句点来表示当前目录.此外,您不能将"\\?\"前缀与相对路径一起使用.相对路径限制为MAX_PATH字符.

shell和文件系统可能有不同的要求.可以使用shell UI无法处理的API创建路径.

C#语法:

[DllImport("kernel32.dll", CharSet=CharSet.Auto, SetLastError=true)]
public static extern bool DeleteFile(string path);
Run Code Online (Sandbox Code Playgroud)

有关该类的详细信息,请参阅系统命名空间 - MSDN

摘录自:

文件系统路径:太长了多长时间? - 编码恐怖

DeleteFile函数(Windows) - MSDN