📌  相关文章
📜  列出目录和子目录中的所有文件c#(1)

📅  最后修改于: 2023-12-03 14:50:13.255000             🧑  作者: Mango

列出目录和子目录中的所有C#文件

在进行代码管理或进行文件操作时,有时需要递归扫描指定目录及其子目录中的文件。在C#中,这可以由以下代码完成:

using System;
using System.IO;

public static void ListFiles(string path)
{
    try
    {
        foreach (string subDir in Directory.GetDirectories(path))
        {
            ListFiles(subDir);
        }

        foreach (string file in Directory.GetFiles(path))
        {
            if (file.EndsWith(".cs"))
            {
                Console.WriteLine(file);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("ListFiles error: " + ex.Message);
    }
}

以上是一个递归函数,可以输出指定目录及其所有子目录下的所有C#代码文件。其中:

  • Directory.GetDirectories 方法用于获取指定目录下子目录的名称。
  • Directory.GetFiles 方法用于获取指定目录下所有文件的名称。
  • String.EndsWith 方法用于判断字符串是否以指定字符或字符串结尾。
  • 上述代码是在控制台应用程序中写的,你可以把 Console.WriteLine 替换成其他代码。

以上代码可以进一步封装成一个类或一个函数,以便在多个应用程序或项目中进行复用。

如果想将输出结果写入文本文件,可以使用以下代码:

public void WriteFiles(string path, List<string> files)
{
    try
    {
        foreach (string subDir in Directory.GetDirectories(path))
        {
            WriteFiles(subDir, files);
        }

        foreach (string file in Directory.GetFiles(path))
        {
            if (file.EndsWith(".cs"))
            {
                files.Add(file);
            }
        }
    }
    catch (Exception ex)
    {
        Console.WriteLine("WriteFiles error: " + ex.Message);
    }
}

这个代码示例将符合条件的文件路径添加到一个 List<string> 集合中,然后可以将集合中的路径写入文本文件。

以上是对于列出目录和子目录中的所有C#文件的一个示例,为了更好地实现应用程序的可维护性、可扩展性,可以进一步优化代码并添加异常处理机制。