本文實例講述了C#遍歷文件夾及其子目錄的完整實現方法。分享給大家供大家參考,具體如下:
using System;using System.Collections;using System.Collections.Generic;using System.IO;using System.Security.AccessControl;using System.Text;namespace ConsoleApplication1{  class Program  {    static void Main(string[] args)    {      Console.WriteLine("STT");      string str = @"E:/";      if (!str.EndsWith("//"))      {        str += "//";      }      IList<FileInfo> lst = GetFiles(str);      if (!Directory.Exists(str))      {        try        {          Directory.CreateDirectory(str);        }        catch(Exception e)        {          Console.WriteLine(e.Message);          Console.ReadKey();          return;        }      }      if (File.Exists(str + "test.txt"))      {        File.Delete(str + "test.txt");      }      FileInfo file = new FileInfo(str + "test.txt");      if (!file.Directory.Exists)      {        Directory.CreateDirectory(file.DirectoryName);      }      using (StreamWriter outFileWriter = new StreamWriter(str + "test.txt", false, Encoding.UTF8))      {        StringBuilder sb = new StringBuilder();        foreach (FileInfo item in lst)        {          sb.Append("/"");          sb.Append(item.FullName);          sb.Append("/"");          sb.Append(",");          sb.Append("/r/n");        }        sb.Remove(sb.Length - 2, 2);        outFileWriter.WriteLine(sb.ToString());        outFileWriter.Flush();        outFileWriter.Close();      }      Console.WriteLine("END");      Console.ReadKey();    }    private static void GetDirectorys(string strPath, ref List<string> lstDirect)    {      DirectoryInfo diFliles = new DirectoryInfo(strPath);      DirectoryInfo[] diArr = diFliles.GetDirectories();      //DirectorySecurity directorySecurity = null;      foreach (DirectoryInfo di in diArr)      {        try        {          //directorySecurity = new DirectorySecurity(di.FullName, AccessControlSections.Access);          //if (!directorySecurity.AreAccessRulesProtected)          //{          lstDirect.Add(di.FullName);          GetDirectorys(di.FullName, ref lstDirect);          //}        }        catch        {          continue;        }      }    }    /// <summary>    /// 遍歷當前目錄及子目錄    /// </summary>    /// <param name="strPath">文件路徑</param>    /// <returns>所有文件</returns>    private static IList<FileInfo> GetFiles(string strPath)    {      List<FileInfo> lstFiles = new List<FileInfo>();      List<string> lstDirect = new List<string>();      lstDirect.Add(strPath);      DirectoryInfo diFliles = null;      GetDirectorys(strPath, ref lstDirect);      foreach (string str in lstDirect)      {        try        {          diFliles = new DirectoryInfo(str);          lstFiles.AddRange(diFliles.GetFiles());        }        catch        {          continue;        }      }      return lstFiles;    }  }}希望本文所述對大家C#程序設計有所幫助。
新聞熱點
疑難解答