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:\Users\Public\Desktop\test.txt");
            FileStream fs = File.Open(@"C:\Users\Public\Desktop\test.txt", FileMode.Append);
            StreamWriter sw = new StreamWriter(fs);
            sw.WriteLine(message);  //這里是寫入的內容
            sw.Close();
            fs.Close();
        }
    }
}

 

控制台信息截圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM