【问题标题】:Directory.Exists return true but Directory.GetDirectories returns empty listDirectory.Exists 返回 true 但 Directory.GetDirectories 返回空列表
【发布时间】:2021-05-06 14:11:08
【问题描述】:

我正在努力解决以下问题:

  • Directory.Exists - 返回 true
  • DirectoryInfo - 可以显示有关目录的信息
  • Directory.GetDirectories - 返回空列表

调试器监视:

【问题讨论】:

  • ..\Default 目录是否包含任何目录?我敢打赌它不会因为它返回Length = 0,其他两种方法返回true ..\Default 目录存在以及有关该目录的信息。
  • 请向您展示三种情况下使用的参数值的实际代码。我怀疑GetDirectories 列出了Directory.Exists 或DirectoryInfo 显示的子目录中的子目录。这意味着该目录存在,但它不包含子目录。
  • @RyanWilson 默认目录应包含 FirstLevelDir 目录。正如您在 DirectoryInfo 对象中看到的那样,它存在。
  • 你能在Windows资源管理器的截图中显示存在的目录吗?
  • @ChristopherSchwarz 您还没有回答问题,即..\Default 是否包含任何目录?当您在文件资源管理器中打开该目录时,您不必费心展示您所看到的图片。当您将其放入 Watch 时,该目录可能已经存在,而当您调用 Directory.GetDirectories 时,该目录已被移动/删除。

标签: c# asp.net io azure-web-app-service


【解决方案1】:

如果您对Directory.Exists 和Directory.GetDirectories 使用相同的路径,您将获得不同类型的信息

string path = @"C:\home\site\wwwroot\wwwroot\ms-cache\Default";
bool exists = Directory.Exists(path);        // --> true
int length = Directory.GetDirectories(path); // --> 0
  • exists == true 表示Default 目录存在。
  • length == 0 表示Default 目录不包含子目录。

要确认有GetDirectories的目录,必须为父目录调用

string parentDir = @"C:\home\site\wwwroot\wwwroot\ms-cache";
int length = Directory.GetDirectories(parentDir ); // --> > 0

现在length 至少为 1,但可能更大。

【讨论】:

  • 看截图,第二个手表显示子目录存在。
  • @ChristopherSchwarz,我们仍然不知道您是如何调用这些方法的。请显示您的实际代码。例如,GetDirectories 有 3 个重载。您使用了哪一个,使用了哪些参数?
  • 我不是 OP,只是指出第二个手表(和最后一个)都说目录存在。
  • @OlivierJacot-Descombes 查看屏幕截图,在左栏中您可以看到用于调用的方法和参数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-15
  • 2019-02-04
  • 2016-02-22
  • 1970-01-01
  • 2022-09-28
相关资源
最近更新 更多