DirectoryInfo,FileInfo和很长的路径

时间:2009-09-08 13:23:03

标签: c# .net fileinfo directoryinfo pathtoolongexception

我尝试使用具有很长路径的DirectoryInfo,FileInfo。

  • 我尝试使用\\?\ c:\ long path(我使用fileInfo和DirectoryInfo获取非法文件)
  • 我尝试使用file:// c:/ long path(我得不到支持)

我可以在路径或其他地方使用〜。

我读了这个post,但我想用另一种调用API的方式。是其他任何解决方案吗?

微软有一篇文章可供使用\\?在文件路径link text

问题是如何使用非常长的路径,DirectoryInfo和FileInfo的路径谁更长的256 char

5 个答案:

答案 0 :(得分:11)

图书馆再次可用on this location.

This is a .NET Library针对.NET Framework 2.0编写,可以用来  从.NET应用程序访问非常长的文件夹和文件。

由于.NET Framework不支持长文件名:-(  我必须编写一个调用WIN32 API并包装它们的库  像System.IO这样的函数。虽然它不是一个完整的复制品  System.IO它确实有大多数对象和函数可用。

Delimon.Win32.IO取代System.IO的基本文件功能  长路径名称支持最多32,767个字符的字符  所以再见MAX_PATH问题

你遇到过这个问题吗?

System.IO.PathTooLongException未得到处理。

消息:

  

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

答案 1 :(得分:10)

查看Long Paths in .NET blog post series,看起来通过P / Invoke转到Win32 API是目前唯一的解决方案,除了重构目录以便你不要达到极限。

答案 2 :(得分:5)

Delimon.Win32.I​O Library (V4.0) 也可用,它是针对.NET Framework 4.0编写的,可以在x86和x86上使用。 x64系统。

答案 3 :(得分:4)

我过去解决这个问题的一种方法是使用Delimon中名为Delimon.Win32.IO的库。看起来他的网站http://www.delimon.be目前正在关闭。但我过去曾在一个项目中使用它,它就像一个冠军。我可以尝试在今晚稍后为您追踪它,或者只是尝试通过谷歌找到它的某个有效链接。干杯。这是讨论这个问题的另一个链接。

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/2541a9b9-acd7-4338-89b1-dfc0408e41b5

答案 4 :(得分:1)

从.NET 4.6.2开始,可以通过更改本地计算机的组策略来解决此问题,从而允许Win 10+和Server 2016 +上的长路径。

经过测试和确认。

https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/