C#获取某一路径下的所有文件名信息(包括子文件夹)

前言:初步梳理记录,以后慢慢总结更多的方法...

方法一:使用微软提供的方法:Dicrectory类中的:public static string[] GetFiles(string path, string searchPattern, SearchOption searchOption);

path-获取文件的路径;searchPattern-要获取的包含的文件标记,使用"."可表示所有文件类型;searchaOption是一个枚举,SearchOption.AllDirectories表示获取当前目录及所有子目录;

获取的结果包含完整路径,处理下即可:

Directory.GetFiles("filePath", ".", SearchOption.AllDirectories);

方法二:使用自定义循环读取某一路径下所有的文件:

贴代码了,这里使用的是C#控制台输出文件名到记事本中,文件名使用逗号隔开:

using System;
using System.IO;

namespace ConsoleApplication1
{
    class Program
    {
        public static string FileName = "";

        public static void Main(string[] args)
        {
            bool isContinute = true;
            WriteMessage("结束程序请输入1");
            WriteMessage("请输入要获取文件名的路径:");
            string path = Console.ReadLine();
            do
            {
                if (string.IsNullOrEmpty(path))
                {
                    WriteMessage("路径不存在!请重新输入");
                }
                else
                {
                    DirectoryInfo dir = new DirectoryInfo(path);
                    if (dir.Exists == false)
                    {
                        WriteMessage("路径不存在!请重新输入");
                    }
                    else
                    {
                        FileName = "";
                        GetChildDicsName(dir);
                        WriteMessage(FileName);
                        Console.WriteLine("获取该路径下文件名成功!你可以继续输入新的路径");
                    }
                }
                path = Console.ReadLine();
                isContinute = path != "1";
            } while (isContinute);
        }

        public static DirectoryInfo[] GetChildDicsName(DirectoryInfo dir)
        {
            FileInfo[] fileArray = dir.GetFiles();
            DirectoryInfo[] childDirs = dir.GetDirectories();

            foreach (FileInfo file in fileArray)
            {
                FileName += file.Name + ",";
            }
            if (childDirs.Length > 0)
            {
                foreach (DirectoryInfo dirChild in childDirs)
                {
                    GetChildDicsName(dirChild);
                }
            }
            return childDirs;
        }

        public static void WriteMessage(string message)
        {
            Console.WriteLine(message);
            //File.Create(@"C:UsersPublicDesktop	est.txt");
            FileStream fs = File.Open(@"C:UsersPublicDesktop	est.txt", FileMode.Append);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(message);  //这里是写入的内容
            sw.Close();
            fs.Close();
        }
    }
}

控制台信息截图:

原文地址:https://www.cnblogs.com/lxhbky/p/9254832.html