好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

C#遍历文件夹及其子目录的完整实现方法

本文实例讲述了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#程序设计有所帮助。

dy("nrwz");

查看更多关于C#遍历文件夹及其子目录的完整实现方法的详细内容...

  阅读:50次