如何使用vb.net创建长度超过260个字符的文件的副本,包括文件名
当我们尝试使用File.Copy方法创建副本时,它会抛出异常,如下所示:
"指定的路径,文件名或两者都太长.完全限定的文件名必须少于260个字符,目录名必须少于248个字符."
有可能吗,请帮忙......
你遇到了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.