【问题标题】:File-counting without Directory.GetFiles() because of too long paths error由于路径太长错误,没有 Directory.GetFiles() 的文件计数
【发布时间】:2019-02-15 13:48:28
【问题描述】:

它是关于在文件导入工具之外运行的进度条。因为我需要知道我们必须导入多少文件,所以我需要以某种方式计算它们。通常我会这样做:

return new DirectoryInfo(myBaseDirectory).GetFiles("*", SearchOption.AllDirectories).Length;

这对我不起作用,因为我必须处理 TooLongPathException。并且在计算它们时,编译器会尝试访问导致异常的特定对象。在文件导入过程中,它已经被处理了。我可以忽略特定的文件。

因为我只需要计算文件而不需要对它们做任何事情,所以我正在寻找另一种解决方案来计算子文件夹中的一些文件。由于我使用的是 .net3.5,因此无法使用 Directory.EnumerateFiles 方法。

【问题讨论】:

  • 您可以调用一些 API 方法可能会有所帮助,它们是 FindFirstFileFindNextFile,但我也从未将它们用于迭代目录。您可以查看有关这些方法的帮助here。长限制的路径是 Windows 的东西,所以我不知道它是否会绕过错误。但我可能会帮你找到另一个解决方案。

标签: c# .net-3.5


【解决方案1】:

Zeta Long Paths 库基本上是特定 win32 函数的包装器,允许您使用超过 260 个字符的路径。我建议使用它或在 win32 文档中搜索所需的功能,然后使用 p/invoke 制作您自己的包装器。

请注意,如果您决定将项目更新到更新的 .NET 版本,从 .NET 4.6.2 及更高版本开始,.NET 支持更大的路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2016-09-05
    • 1970-01-01
    • 2016-08-18
    • 2016-06-08
    • 2013-01-02
    相关资源
    最近更新 更多