【问题标题】:Finding txt files inside a given folder with subfolders?在带有子文件夹的给定文件夹中查找txt文件?
【发布时间】:2016-08-28 03:51:37
【问题描述】:

谁能告诉我如何在给定文件夹中找到说 *.txt 文件,其中的结构 12345\30123\128\txt\100.txt 中有子文件夹,主文件夹可以包含其他子文件夹或 txt 文件,但我只想获取位于 12345\30123\128\txt\100.txt 格式的子文件夹中的 txt 文件。即所有 txt 文件夹中的 txt 文件

我试过这个:

Dim txtFilesArray As String() = Directory.GetFiles(targetDirectory, "*.txt", SearchOption.AllDirectories)

但它会获取所有 txt 文件?

【问题讨论】:

    标签: vb.net


    【解决方案1】:
    Dim txtFiles = Directory.EnumerateFiles(targetDirectory,"*.txt",SearchOption.AllDirectories)
              .Where(Function(f) f Like "*\#*\#*\#*\txt\#*.txt")
    

    # 匹配从 0 到 9 的任意数字,* 匹配任意 0 或多个字符

    或更慢的RegEx 版本将类似于

    Dim txtFiles = Directory.EnumerateFiles(targetDirectory,"*.txt",SearchOption.AllDirectories)
              .Where(Function(f) RegEx.IsMatch(f, ".*\\\d+\\\d+\\\d+\\txt\\\\d+\.txt"))
    
    For Each txtFile In txtFiles 
        '...
    Next
    

    【讨论】:

    • 结构中的文件夹名称 12345\30123\128\txt\100.txt 可能不同,例如第一个文件夹而不是五位数名称六位数字名称或四位数字名称,所有子文件夹都一样,我可以使用 (\d+)\(\d+)\(\d+)\txt\(\d+).txt 而不是 *####\#####\###\txt\###.txt 和完全相同的代码吗?
    • @Don_B Like 运营商不支持这一点,但我更新了我的答案以匹配一个数字和#* 之后的任意数量的字符。我不确定RegEx 版本是否可以工作。
    • Like 运算符中的连字符“-”匹配什么?
    • 非常感谢您的帮助!!
    【解决方案2】:

    这将返回除path 中的所有文件之外的所有文件:

    Dim path = "C:\"
    Dim di As New DirectoryInfo(path)
    Dim files = di _
        .GetFiles("*.txt", SearchOption.AllDirectories) _
        .Where(Function(info) info.DirectoryName <> path) _
        .Select(function(info) info.FullName) _
        .ToArray()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-04-25
      • 2023-03-31
      相关资源
      最近更新 更多