DirectoryInfo、FileInfo和非常长的路径

12

我尝试使用DirectoryInfo,FileInfo处理非常长的路径。

  • 我尝试使用 \\?\c:\long path(使用FileInfo和DirectoryInfo时会得到非法字符错误)
  • 我尝试使用 file://c:/long path(得到“uri不受支持”错误)

我能否在路径中使用~或其他内容?

我读了这篇文章(链接),但我想用调用API以外的方法。还有其他解决方案吗?

Microsoft有一篇文章介绍如何在文件路径中使用\\?:(链接)

问题是如何处理超过256个字符的非常长路径,以及DirectoryInfo和FileInfo。


AlphaFS(https://github.com/alphaleonis/AlphaFS)可能存在bug,但是我使用Directory.GetFiles(,,SearchOption.AllDirectories)时工作正常。在VS2017中下载并生成dlls,这些dlls适用于NetFx45 / 46/47/20,在VS2019中使用,非常好。 - jw_
这个回答解决了你的问题吗?解决文件路径过长异常的最佳方法 - Liam
5个回答

13

该库已经重新提供 下载。

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

由于 .NET Framework 不支持长文件名 :-( 因此我不得不编写一个调用 WIN32 API 并包装那些函数的库,就像System.IO。尽管它不是System.IO的完整副本,但它确实具有大多数对象和函数可用。

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

你遇到过这个问题吗?

System.IO.PathTooLongException未被处理。

消息:

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


Delimon.Win32.IO似乎是由一家公司封闭的源代码。AlphaFS https://github.com/alphaleonis/AlphaFS 可能存在漏洞,但对我来说使用Directory.GetFiles(,,SearchOption.AllDirectories)工作得很好。 - jw_

11

6

Delimon.Win32.IO 似乎是由一家公司封闭源代码的。AlphaFS https://github.com/alphaleonis/AlphaFS 可能存在一些错误,但对我来说使用 Directory.GetFiles(,,SearchOption.AllDirectories) 功能良好。 - jw_

5

1

对我没有起作用。 - Morten Jensen
你在更改后重新启动了电脑吗?你确定你更改的组策略正在应用于你的用户吗? - Robear
是的。即使在重启后(Windows Server LTSC 2022),它对我仍然没有用。最终我使用了AlphaFS。 ‍♂️ - Morten Jensen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接