首页 > 编程 > C# > 正文

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

2020-01-24 01:04:59
字体:
来源:转载
供稿:网友

本文实例讲述了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#相关内容感兴趣的读者可查看本站专题:《C#遍历算法与技巧总结》、《C#程序设计之线程使用技巧总结》、《C#操作Excel技巧总结》、《C#中XML文件操作技巧汇总》、《C#常见控件用法教程》、《WinForm控件用法总结》、《C#数据结构与算法教程》、《C#数组操作技巧总结》及《C#面向对象程序设计入门教程

希望本文所述对大家C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表