首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C#帮助需要更改删除长路径文件夹的代码

C#帮助需要更改删除长路径文件夹的代码
EN

Stack Overflow用户
提问于 2010-03-03 10:38:36
回答 1查看 336关注 0票数 1

不久前,我问了一个关于删除路径较长的文件夹(>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

非常感谢

//建议的守则:

代码语言:javascript
运行
复制
var curDir = Directory.GetCurrentDirectory();
Environment.CurrentDirectory = @"C:\Part\Of\The\Really\Long\Path";
Directory.Delete("Relative\Path\To\Directory");
Environment.CurrentDirectory = curDir;

//我的代码:

代码语言:javascript
运行
复制
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);
 }
EN

回答 1

Stack Overflow用户

发布于 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。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2370438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档