【问题标题】:FileInfo[] files = dir.GetFiles(fileSearch, SearchOption.TopDirectoryOnly) isnt returning files that exist in the directoryFileInfo[] files = dir.GetFiles(fileSearch, SearchOption.TopDirectoryOnly) 不返回目录中存在的文件
【发布时间】:2019-11-18 20:55:28
【问题描述】:

我有以下 FileInfo 搜索模式,并且没有返回目录中的文件。

        string fileSearch = itemP + "_" + ParseColor(itemC) + "*_c1.jpg";
        FileInfo[] files = dir.GetFiles(fileSearch, SearchOption.TopDirectoryOnly);

目录中存在的文件如下: 122929977_NAVY_HOHHE_0_0_c1.jpg

如果我更改模式以忘记颜色和 *_c1 它会找到文件,但这不是我需要的,有些图像具有图片的多个视图,但我唯一需要和想要的就是那个与传入的颜色匹配并且名称中包含 _c1..

构建并传入dir.GetFiles的模式是“122929977_NAVY*_c1.jpg”

我做错了什么?它可以与我想要传递的预期模式一起工作吗?

【问题讨论】:

  • fileSearch的值实际上是"122929977_NAVY*_c1.jpg"吗?我刚刚测试了该模式,它确实找到了“122929977_NAVY_HOHHE_0_0_c1.jpg”
  • 会不会是区分大小写的问题?或者扩展名不是jpg,而是jpeg?我会在这里仔细查看您的实际文件名
  • 另外,这个文件是否位于dir 目录中,而不是下面的子文件夹?只需检查您是否可以使用SearchOption.AllDirectories 找到任何内容。
  • @Xiaoy312 是的,减去引号,这就是我在调试和逐步执行代码时看到的变量文件搜索中传递的内容。在该目录中,没有子目录,并且搜索模式的第一部分存在 2 个文件 122929977_NAVY_HOHHE_0_0_c1.jpg 和 122929977_NAVY_HOHHE_0_0_c2.jpg,在这种情况下,它应该为我找到了 _c1 文件,但从未找到。就像我说如果我将我的模式更改为 122929977_NAVY*.jpg 它可以工作,但它会返回上面的 2 个文件,我只需要 c1 图像。
  • dir 是 DirectoryInfo 对象。你能展示你如何构建类构造函数中使用的路径吗?因为,如果文件名 + 通配符是"122929977_NAVY*_c1.jpg" 并且路径正确,你就会得到结果。

标签: c# winforms directory fileinfo


【解决方案1】:

不确定出了什么问题,但您可以尝试通过使用不同的过滤方式来解决此问题:

var files = dir.GetFiles(itemP + "_" + ParseColor(itemC), SearchOption.TopDirectoryOnly)
    .Where(x => x.Name.EndsWith("_c1.jpg"))
    .ToArray();

【讨论】:

  • 我想为这篇文章向大家道歉,经过进一步测试和调试后,我发现在此方法之前的 2 个方法,我的变量已更改,因此 dir.getfiles 的工作路径正在寻找文件在他们不存在的目录中。我刚刚测试过,到目前为止似乎正在工作..
猜你喜欢
  • 1970-01-01
  • 2014-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多