Complete Implementation of C Traversing Folder and Its Subdirectories
- 2021-10-25 07:39:06
- OfStack
This article illustrates the complete implementation of C # traversing folders and their subdirectories. Share it for your reference, as follows:
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>
/// Traverse the current directory and subdirectories
/// </summary>
/// <param name="strPath"> File path </param>
/// <returns> All files </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;
}
}
}
More readers interested in C # can check the topic of this site: "C # Traversal Algorithms and Skills Summary", "C # Programming Thread Use Skills Summary", "C # Operating Excel Skills Summary", "C # Common Control Usage Tutorial", "WinForm Control Usage Summary", "C # Data Structure and Algorithm Tutorial", "C # Array Operation Skills Summary" and "C # Object-Oriented Programming Introduction Tutorial"
I hope this article is helpful to everyone's C # programming.