栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何处理名称长度超过259个字符的文件?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何处理名称长度超过259个字符的文件?

.NET 4.6.2解决方案

使用此处

\?C:Verrrrrrrrrrrry long path

描述的语法。

.NET Core解决方案

之所以起作用,是因为该框架为您添加了长路径语法。

.NET 4.6.2之前的解决方案

还可以 通过P / Invoke 使用长路径语法 和Win32 API函数的Unipre版本。
从命名文件,路径和命名空间:

Windows
API具有许多功能,它们也具有Unipre版本,以允许使用扩展长度的路径,最大总路径长度为32,767个字符。这种类型的路径由用反斜杠分隔的组件组成,每个反斜杠都取决于GetVolumeInformation函数的lpMaximumComponentLength参数中返回的值(该值通常为255个字符)。
要指定扩展长度的路径,请使用

\?
前缀。例如,
\?D:very long path

阅读此Microsoft支持页面也可能很有趣。

BCL团队博客的Kim
Hamilton在.NET中的Long
Paths中进行了非常广泛的解释,列出了处理这些路径的一些障碍,他声称这是.NET仍不直接支持此语法的原因:

我们过去不愿添加长路径的原因有很多,以及为什么我们仍然对此保持谨慎<…>。

<…>

\?
前缀不仅允许长路径;它会导致通过Windows
API进行最少的修改即可将路径传递到文件系统。结果是
\?
关闭了Windows
API执行的文件名规范化,包括删除尾随空格,扩展“。”。和’..’,将相对路径转换为完整路径,依此类推。<…>

<…>带有

\?
前缀的长路径可以在大多数与 文件相关的 Windows API中使用,但不能在所有Windows
API中使用。例如,如果文件名长于MAX_PATH,则LoadLibrary <…>失败。<…>整个Windows
API中都有类似的示例。存在一些变通办法,但它们是逐案的。

<…>的另一个因素是与其他基于Windows的应用程序以及Windows Shell本身的兼容性。

由于此问题变得越来越普遍,因此Microsoft一直在努力解决它。实际上,作为及时的Vista插件,您会注意到一些更改,这些更改减少了达到MAX_PATH限制的机会:许多特殊文件夹的名称已缩短,更有趣的是,shell使用了自动路径收缩功能。
<…>尝试将其压缩为260个字符。


警告:您可能需要直接调用Windows API,因为我认为.NET framework可能不支持这种路径语法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465464.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号