为了账号安全,请及时绑定邮箱和手机立即绑定

如何避免System.IO.PathTooLongException?

如何避免System.IO.PathTooLongException?

慕斯王 2019-12-03 11:08:53
我们不断遇到这个问题...例:如果我有一个文件要复制到另一个目录或UNC共享中,并且路径长度超过248(如果我没记错的话),则抛出PathTooLongException。有没有解决此问题的方法?PS:是否有任何注册表设置将此路径设置为更长的字符集?
查看完整描述

3 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

BCL团队对此进行了深入讨论,请参阅博客条目。

本质上,没有办法在.Net代码中执行此操作并坚持使用BCL。太多的函数依赖于能够规范化路径名(这立即触发期望遵循MAX_PATH的函数的使用)。

您可以包装所有支持“ \\?\”语法的win32函数,使用这些函数,您可以实现一套可识别长路径的功能,但这会很麻烦。

由于大量工具(包括explorer [1])无法处理长路径名,因此不建议沿这条路线走,除非您对与结果文件系统的所有交互都通过您的库感到满意(或感到满意的工具数量有限)可以像robocopy一样处理它)

为了满足您的特定需求,我将调查直接使用robocopy是否足以执行此任务。

[1] Vista可以通过在后台进行一些重命名来缓解该问题,但这充其量是脆弱的。


查看完整回答
反对 回复 2019-12-03
  • 3 回答
  • 0 关注
  • 894 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信