C# DirectoryInfo、FileInfo和超长路径

C# DirectoryInfo、FileInfo和超长路径,c#,.net,fileinfo,directoryinfo,pathtoolongexception,C#,.net,Fileinfo,Directoryinfo,Pathtoolongexception,我尝试使用DirectoryInfo,具有很长路径的FileInfo 我尝试使用\\?\c:\long path(我使用fileInfo和DirectoryInfo获得非法字符) 我尝试使用file://c:/long path(我得到的uri不受支持) 我可以在小路或其他地方使用~吗 我读过这篇文章,但我想用另一种方式调用API。还有其他解决办法吗 有一篇来自microsoft的文章可供使用\\?文件路径中 问题是我如何处理很长的路径,对于长度超过256个字符的路径,DirectoryIn

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

  • 我尝试使用\\?\c:\long path(我使用fileInfo和DirectoryInfo获得非法字符)
  • 我尝试使用file://c:/long path(我得到的uri不受支持)
我可以在小路或其他地方使用~吗

我读过这篇文章,但我想用另一种方式调用API。还有其他解决办法吗

有一篇来自microsoft的文章可供使用\\?文件路径中


问题是我如何处理很长的路径,对于长度超过256个字符的路径,DirectoryInfo和FileInfo看起来,通过p/Invoke访问Win32 API是目前唯一的解决方案,除了重新构造目录以避免达到限制之外。

我过去解决这个问题的方法是使用Delimon中名为Delimon.Win32.IO的库。看起来他的网站现在已经关闭了。但我过去曾在一个项目中使用过它,它像冠军一样工作。我可以在今晚晚些时候帮你找到它,或者通过谷歌在某处找到一个有效的链接。干杯下面是讨论这个问题的另一个链接


该库再次可用

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

由于.NET Framework不支持长文件名:-( 我必须编写一个库来调用WIN32 API并包装这些API 功能类似于
System.IO
。但它不是
System.IO
它确实有大多数可用的对象和功能

Delimon.Win32.IO
替换了
System.IO的基本文件函数
长路径名支持最多32767个字符 所以再见,再见,最大路径问题

你遇到过这个问题吗

System.IO.PathTooLongException
未处理

信息:

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


也可用,它是针对.NET Framework 4.0编写的,可以在x86和x64系统上使用。

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

测试和确认


Delimon.Win32.IO似乎来自某家公司。AlphaFS可能有漏洞,但我可以使用目录。GetFiles(,,SearchOption.AllDirectory)Delimon.Win32.IO似乎来自某家公司。AlphaFS可能有漏洞,但我可以使用Directory.GetFiles(,,SearchOption.AllDirectory)AlphaFS可能有bug,但我可以使用Directory.GetFiles(,,SearchOption.AllDirectories)。下载并内置VS2017,它为NetFx45/46/47/20生成DLL,用于VS2019,尼斯。这能回答您的问题吗?