12

我尝试使用路径很长的 DirectoryInfo、FileInfo。

  • 我尝试使用 \\?\c:\long 路径(我得到了带有 fileInfo 和 DirectoryInfo 的非法字符)
  • 我尝试使用 file://c:/long 路径(我不支持 uri)

我可以在路径或其他东西中使用〜。

我读了这篇文章,但我想使用另一种调用 API 的方式。是否有其他解决方案?

微软有一篇文章供使用 \\? 在文件路径链接文本中

问题是我如何使用非常长的路径,以及超过 256 个字符的路径的 DirectoryInfo 和 FileInfo

4

5 回答 5

13

图书馆在此位置再次可用。

这是一个针对 .NET Framework 2.0 编写的 .NET 库,可用于从 .NET 应用程序访问很长的文件夹和文件。

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

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

你有没有遇到过这个问题?

System.IO.PathTooLongException未处理。

信息:

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

于 2012-03-19T20:30:51.860 回答
10

查看.NET博客文章系列中的Long Paths ,看起来通过 P/Invoke 访问 Win32 API 是目前唯一的解决方案,除了重组目录以免达到限制。

于 2009-09-08T13:34:43.577 回答
6

Delimon.Win32.IO库 (V4.0)也可用,它是针对 .NET Framework 4.0 编写的,可用于 x86 和 x64 系统。

于 2013-02-16T05:12:18.480 回答
5

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

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

于 2009-09-08T14:51:56.103 回答
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/

于 2017-09-17T18:51:05.047 回答