不久前,我问了一个关于删除路径较长的文件夹(>260个字符)的堆栈溢出问题,最流行的解决方案是移动到每个目录中,以减少路径的长度。我已经和这件事做了斗争,我不再继续了,有人能建议我如何将建议的代码集成到我的代码中吗?
一条典型的路径是:
\serverName\share\dave\Private\Careers\Careers Ed\Fun职业教育\Chris没有使用2006到07岁4.Careers地区活动周1、30.10.06、6.11.06或13.11.06介绍职业水平和职业资源\职业领域和职业水平-教师帮助Sheet1.doc
非常感谢
//建议的守则:
var curDir = Directory.GetCurrentDirectory();
Environment.CurrentDirectory = @"C:\Part\Of\The\Really\Long\Path";
Directory.Delete("Relative\Path\To\Directory");
Environment.CurrentDirectory = curDir;
//我的代码:
try
{
var dir = new DirectoryInfo(@FolderPath);
dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly;
dir.Delete();
}
catch (IOException ex)
{
MessageBox.Show(ex.Message,"Delete Error",MessageBoxButtons.OK,MessageBoxIcon.Error);
}
发布于 2010-03-03 11:14:26
您试过使用长路径名称语法吗?来自platform SDK中的CreateFile函数:
Windows中的
最大路径长度(除稍后讨论的一些例外情况外),路径的最大长度为MAX_PATH,它被定义为260个字符。本地路径按以下顺序构造:驱动器字母、冒号、反斜杠、由反斜杠分隔的组件以及终止空字符。例如,驱动器D上的最大路径是"D:\<256 chars>NUL“。
Windows API有许多函数,这些函数还具有Unicode版本,允许最大路径长度约为32,000个字符,由组件组成,每个字符的长度可达255个。若要指定这种扩展长度路径,请使用“\”前缀。例如,“\\d:\”。
注意,32,000个字符的最大路径是近似的,因为“\”前缀可以展开为较长的字符串,并且展开适用于总长度。
若要使用UNC指定这样的路径,请使用“\\UNC\”前缀。例如,“\UNC\”。这些前缀不作为路径本身的一部分使用。它们表示路径应该在修改最少的情况下传递到系统,这意味着您不能使用正斜杠来表示路径分隔符,也不能使用句点来表示当前目录。此外,不能在相对路径中使用“\?”前缀。相对路径仅限于MAX_PATH字符。
最后一段当然是与你的案件有关的一段。
不确定.NET是否支持这种路径。您可以使用P/Invoke从RemoveDirectory SDK调用Win32。
https://stackoverflow.com/questions/2370438
复制相似问题