如何创建长度超过260个字符的文件的副本

Sum*_*man 6 vb.net excel

如何使用vb.net创建长度超过260个字符的文件的副本,包括文件名

当我们尝试使用File.Copy方法创建副本时,它会抛出异常,如下所示:

"指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符."

有可能吗,请帮忙......

Mat*_*lis 9

你遇到了MAX_PATH限制.作为解决方法,您应该能够直接P/Invoke到kernel32.dll的CopyFile函数,并使用目标路径前面的"\\?\"前缀来防止遇到MAX_PATH问题.

请注意,虽然您能够以大多数应用程序无法打开它的方式复制文件,因为它们也受到MAX_PATH的限制.

可以在这里找到问题的一个很好的概述:http://blogs.msdn.com/bclteam/archive/2007/02/13/long-paths-in-net-part-1-of-3-kim-hamilton的.aspx

使用C#调用这些方法的一些示例代码可以在第2部分中找到,这里是:http://blogs.msdn.com/bclteam/archive/2007/03/26/long-paths-in-net-part -2-的-3-长路径的解决方法,KIM-hamilton.aspx

schnaader 链接到的库看起来会省去P/Invoking到kernel32.dll的问题,不确定是否要依赖外部dll.


Chr*_*isW 2

有一些缩短名称的提示...请参阅标题为“原因 4:文件存在于比 MAX_PATH 字符更深的路径中”的部分,网址为http://support.microsoft.com/?kbid=320081#