本文实例讲述了C#遍历文件夹及其子目录的完整实现方法。分享给大家供大家参考,具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
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#程序设计有所帮助。