📅  最后修改于: 2023-12-03 14:50:13.255000             🧑  作者: Mango
在进行代码管理或进行文件操作时,有时需要递归扫描指定目录及其子目录中的文件。在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#文件的一个示例,为了更好地实现应用程序的可维护性、可扩展性,可以进一步优化代码并添加异常处理机制。