我们经常遇到这样的问题...
示例:
如果我有一个想要复制到另一个目录或UNC共享中的文件,如果路径长度超过248 (如果我没记错),那么它就会抛出PathTooLongException。这个问题有什么解决方法吗?
PS:是否有任何注册表设置可以将此路径设置为更长的字符集?
发布于 2016-08-11 15:11:24
发布于 2015-07-23 12:52:26
试试这个:Dlimon.Win32.I Framework库(V4.0)这个库是基于.NET4.0编写的
Win32.IO取代了System.IO的基本文件功能,并支持最多32,767个字符的文件名和文件夹名。
https://gallery.technet.microsoft.com/DelimonWin32IO-Library-V40-7ff6b16c
这个库是专门为克服.NET框架使用长路径和文件名的限制而编写的。使用此库,您可以通过编程方式浏览、访问、写入、删除等System.IO namespace.Library无法访问的文件和文件夹
使用
一样
发布于 2009-02-10 10:10:38
BCL团队已经对此进行了深入的讨论,请参阅blog entries
本质上,没有办法在.Net代码中做到这一点并坚持使用BCL。太多的函数依赖于能够规范化路径名(这会立即触发期望遵循MAX_PATH的函数的使用)。
您可以包装所有支持"\?\“语法的win32函数,使用这些函数,您将能够实现一套长路径感知功能,但这会很麻烦。
由于大量的工具(包括explorer1)不能处理长路径名,所以不建议采用这种方法,除非您很高兴与生成的文件系统的所有交互都通过您的库(或为像robocopy那样处理它而构建的有限数量的工具)。
为了回答您的特定需求,我将调查直接使用robocopy是否足以执行此任务。
1 Vista有办法通过一些花哨的重命名来缓解这个问题,但这充其量是脆弱的)
https://stackoverflow.com/questions/530109
复制相似问题