首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Directory.SetCurrentDirectory抛出PathTooLongException

Directory.SetCurrentDirectory抛出PathTooLongException
EN

Stack Overflow用户
提问于 2010-10-29 08:27:46
回答 1查看 1.4K关注 0票数 2

关于堆栈溢出有几个相关的问题,但要么我的情况不同,要么我太笨了,以至于无法将这些问题与情况联系起来。我希望有人能帮我这个忙。此外,我甚至不是一个.NET开发人员,所以我事先为任何错误的术语使用道歉。

我的场景如下:用于部署我们的.net应用程序的工具(一次单击?)将其放入全名超过300个字符的目录中。应用程序使用第三方组件--让我们称之为dbstore --处理驻留在应用程序部署目录中的指定文件。

到目前为止,我们使用Assembly.GetExecutingAssembly().GetName().CodeBase来构造要传递给dbstore的文件的完全限定名。但是dbstore使用旧风格的API,并在尝试打开文件时失败。

由于dbstore预计不会很快改变,因此建议将应用程序chdir发送到部署目录,并将当前目录中的相对路径名传递给它。这也是在接受的响应PathTooLongException in C# code中描述的方法。

但是,我发现Directory.SetCurrentDirectory也抛出了PathTooLongException。即使我使用UNC路径名,例如以\\?\0000000000000\...开头的名称,也会发生这种情况。

我做了什么根本不对的事吗?还有其他功能可以使用吗?

编辑:似乎没有办法实现我正在寻找的。据我所知,无法将当前目录设置为长路径。

EN

回答 1

Stack Overflow用户

发布于 2010-10-29 08:39:53

在使用Environment.SetCurrentDirectory()时,会得到类似的结果吗?

如果是这样,则可能要在子文件夹之后更改目录子文件夹。

编辑:

Windows实际上为文件路径(WinXP)或260个字符(Vista)设置了255个字符的限制。请注意,此限制不适用于文件系统,因此可以将文件存储在如此长的目录路径中,但Windows Explorer和许多Windows服务无法从这种路径中读取。

实际上,它似乎还包括.NET框架方法,因为您无法访问这些文件。您可能需要编写自己的文件系统API,但这有点开销过大。你就不能缩短文件路径吗?Windows是否提供了一种缩短的文件地址方式(比如8个八位文件名)?

来源:http://labnol.blogspot.com/2006/10/limitations-with-long-file-names-on.html

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

https://stackoverflow.com/questions/4050199

复制
相关文章

相似问题

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