如何遍历所有目录中的所有文件并仅获取文件类型?

曼尼·梅纳赫姆(Manny Menachem)

在这种方法中,如果我没有记错的话,它是在文件内部进行搜索。因此,当我输入searchTerm例如“ Form1”时,它发现了46个文件。

但是现在我想更改没有searchTerm的方法,这样它将遍历所有文件,但是最后我想获取所有文件类型的列表。如果有相同的dupilcate,则不要将它们添加到列表中,因此最后我将获得一个包含文件类型项的列表,例如:cs,txt,xml,这样我就知道存在哪些文件类型。

IEnumerable<string> SearchAccessibleFiles(string root, string searchTerm)
        {
            var files = new List<string>();

            foreach (var file in Directory.EnumerateFiles(root).Where(m => m.Contains(searchTerm)))
            {
                files.Add(file);
            }
            foreach (var subDir in Directory.EnumerateDirectories(root))
            {
                try
                {
                    files.AddRange(SearchAccessibleFiles(subDir, searchTerm));
                }
                catch (UnauthorizedAccessException ex)
                {
                    // ...
                }
            }

            return files;
        }

问题是,如果我只是制作GetFiles,并且根目录为c:\,则它将停止并且在进入Windows 10中的目录时将不获取任何文件:文档和设置

Directory.GetFiles(textBox3.Text, "*.*", SearchOption.AllDirectories).ToList();

由于找不到通过该目录传递Directory.GetFiles的方法,因此我尝试使用递归方法。

sh

您可以使用以下文件名来获取文件扩展名,extension = Path.GetExtension(fileName);并通过.Distinct()在文件列表上使用删除重复项

IEnumerable<string> SearchAccessibleFiles(string root, string searchTerm)
    {
        var files = new List<string>();

        foreach (var file in Directory.EnumerateFiles(root).Where(m => m.Contains(searchTerm)))
        {
            string extension = Path.GetExtension(file);
            files.Add(extension);
        }
        foreach (var subDir in Directory.EnumerateDirectories(root))
        {
            try
            {
                files.AddRange(SearchAccessibleFiles(subDir, searchTerm));
            }
            catch (UnauthorizedAccessException ex)
            {
                // ...
            }
        }
        return files.Distinct().ToList();
    }

您可以简单地删除.Where(m => m.Contains(searchTerm))要搜索的部分而无需搜索词。

编辑如果您不想使用.Distict()并且想随时检查重复项,可以尝试以下方法:

IEnumerable<string> SearchAccessibleFilesNoDistinct(string root, List<string> files)
{
    if(files == null)
       files = new List<string>();

    foreach (var file in Directory.EnumerateFiles(root))
    {
        string extension = Path.GetExtension(file);
        if(!files.Containes(extension))
           files.Add(extension);
    }
    foreach (var subDir in Directory.EnumerateDirectories(root))
    {
        try
        {
            SearchAccessibleFilesNoDistinct(subDir, files);
        }
        catch (UnauthorizedAccessException ex)
        {
            // ...
        }
    }
    return files;
}

第一次呼叫看起来像这样:

var extensionsList = SearchAccessibleFilesNoDistinct("rootAddress",null);

您会看到我通过递归方法传递了文件列表,通过这种方法,我们在所有递归调用中都具有相同的文件列表,因此应该可以解决问题,请记住,在递归调用中无需获取返回的列表因为我们已经有相同的列表,但是最后我们可以使用返回的列表进行进一步使用。希望能有所帮助

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从其他目录中的所有目录中获取所有文件,并检查每个文件的大小?

来自分类Dev

如何在C中遍历目录并打印所有文件的名称和权限

来自分类Dev

遍历目录中的所有文件,或仅遍历sh中的指定文件

来自分类Dev

NGINX:在所有目录中仅提供特定的文件类型

来自分类Dev

如何使此脚本循环遍历目录中的所有文件?

来自分类Dev

获取除隐藏目录中的文件以外的所有文件?

来自分类Dev

如何获取目录中的所有文件名?

来自分类Dev

如何在Python中获取当前目录中的所有文件名和文件大小

来自分类Dev

如何从php中所有文件的文件夹目录中仅获取视频文件?

来自分类Dev

如何使用javafx从目录中获取所有文件

来自分类Dev

如何从xslt中的目录获取所有文件

来自分类Dev

如何遍历目录中的所有文件,运行脚本并将其写入其他目录中的匹配文件

来自分类Dev

wget获取目录中的所有文件仅返回index.html

来自分类Dev

如何从目录中删除所有文件?

来自分类Dev

如何遍历C中的目录并打印所有文件的名称和权限

来自分类Dev

遍历linux / android中目录中的所有文件(包括以'。'开头的文件-隐藏文件)

来自分类Dev

如何告诉ffmpeg依次遍历目录中的所有文件

来自分类Dev

如何删除所有目录中的所有文件?

来自分类Dev

如何使此脚本循环遍历目录中的所有文件?

来自分类Dev

无法遍历目录中的所有文件

来自分类Dev

如何在指定目录中递归列出所需文件类型的所有文件?

来自分类Dev

如何遍历所有子目录中的文件?

来自分类Dev

如何列出命名目录中的所有文件,包括文件类型?

来自分类Dev

如何按“类型”对所有目录排序文件顺序?

来自分类Dev

信息亭模式-如何从目录中获取所有文件?

来自分类Dev

获取目录json中的所有文件

来自分类Dev

重命名目录中特定类型的所有文件

来自分类Dev

如何在python中对目录中的所有文件或仅基于args的单个文件执行函数

来自分类Dev

从目录中已关闭的工作簿中获取单元格值 - 如何遍历所有现有文件?

Related 相关文章

  1. 1

    如何从其他目录中的所有目录中获取所有文件,并检查每个文件的大小?

  2. 2

    如何在C中遍历目录并打印所有文件的名称和权限

  3. 3

    遍历目录中的所有文件,或仅遍历sh中的指定文件

  4. 4

    NGINX:在所有目录中仅提供特定的文件类型

  5. 5

    如何使此脚本循环遍历目录中的所有文件?

  6. 6

    获取除隐藏目录中的文件以外的所有文件?

  7. 7

    如何获取目录中的所有文件名?

  8. 8

    如何在Python中获取当前目录中的所有文件名和文件大小

  9. 9

    如何从php中所有文件的文件夹目录中仅获取视频文件?

  10. 10

    如何使用javafx从目录中获取所有文件

  11. 11

    如何从xslt中的目录获取所有文件

  12. 12

    如何遍历目录中的所有文件,运行脚本并将其写入其他目录中的匹配文件

  13. 13

    wget获取目录中的所有文件仅返回index.html

  14. 14

    如何从目录中删除所有文件?

  15. 15

    如何遍历C中的目录并打印所有文件的名称和权限

  16. 16

    遍历linux / android中目录中的所有文件(包括以'。'开头的文件-隐藏文件)

  17. 17

    如何告诉ffmpeg依次遍历目录中的所有文件

  18. 18

    如何删除所有目录中的所有文件?

  19. 19

    如何使此脚本循环遍历目录中的所有文件?

  20. 20

    无法遍历目录中的所有文件

  21. 21

    如何在指定目录中递归列出所需文件类型的所有文件?

  22. 22

    如何遍历所有子目录中的文件?

  23. 23

    如何列出命名目录中的所有文件,包括文件类型?

  24. 24

    如何按“类型”对所有目录排序文件顺序?

  25. 25

    信息亭模式-如何从目录中获取所有文件?

  26. 26

    获取目录json中的所有文件

  27. 27

    重命名目录中特定类型的所有文件

  28. 28

    如何在python中对目录中的所有文件或仅基于args的单个文件执行函数

  29. 29

    从目录中已关闭的工作簿中获取单元格值 - 如何遍历所有现有文件?

热门标签

归档