我们不断遇到这个问题...例:如果我有一个文件要复制到另一个目录或UNC共享中,并且路径长度超过248(如果我没记错的话),则抛出PathTooLongException。有没有解决此问题的方法?PS:是否有任何注册表设置将此路径设置为更长的字符集?
3 回答
烙印99
TA贡献1829条经验 获得超13个赞
BCL团队对此进行了深入讨论,请参阅博客条目。
本质上,没有办法在.Net代码中执行此操作并坚持使用BCL。太多的函数依赖于能够规范化路径名(这立即触发期望遵循MAX_PATH的函数的使用)。
您可以包装所有支持“ \\?\”语法的win32函数,使用这些函数,您可以实现一套可识别长路径的功能,但这会很麻烦。
由于大量工具(包括explorer [1])无法处理长路径名,因此不建议沿这条路线走,除非您对与结果文件系统的所有交互都通过您的库感到满意(或感到满意的工具数量有限)可以像robocopy一样处理它)
为了满足您的特定需求,我将调查直接使用robocopy是否足以执行此任务。
[1] Vista可以通过在后台进行一些重命名来缓解该问题,但这充其量是脆弱的。
- 3 回答
- 0 关注
- 894 浏览
添加回答
举报
0/150
提交
取消