namespace FileAndFolderList ... { using System; using System.Collections; using System.IO; using System.Windows.Forms; internal class FileAndFolderList ...{ // Methods public FileAndFolderList() ...{ this.fileList = new ArrayList(); this.lineCountList = new ArrayList(); this.sum = 0; } private void Count() ...{ int num1 = 0; IEnumerator enumerator1 = this.fileList.GetEnumerator(); while (enumerator1.MoveNext()) ...{ num1 = this.CountFileLines(enumerator1.Current.ToString()); this.sum += num1; this.lineCountList.Add(num1); } } private int CountFileLines(string sourceFilePath) ...{ string text1; int num1 = 0; StreamReader reader1 = new StreamReader(sourceFilePath); while ((text1 = reader1.ReadLine()) != null) ...{ if (text1.Trim() == "") ...{ continue; } num1++; } return num1; } private static void DeleteErrLogFile() ...{ string text1 = Application.StartupPath + @"ErrorLog.Text"; if (File.Exists(text1)) ...{ File.Delete(text1); } } private void Enumerate(DirectoryInfo diStart, ArrayList arrfileExtension) ...{ try ...{ FileSystemInfo[] infoArray1 = diStart.GetFileSystemInfos(); for (int num1 = 0; num1 < infoArray1.Length; num1++) ...{ FileSystemInfo info1 = infoArray1[num1]; if (info1.GetType() == typeof(DirectoryInfo)) ...{ this.Enumerate((DirectoryInfo)info1, arrfileExtension); } if (info1.GetType() == typeof(FileInfo)) ...{ IEnumerator enumerator1 = arrfileExtension.GetEnumerator(); while (enumerator1.MoveNext()) ...{ if (info1.Extension.ToLower() != enumerator1.Current.ToString().ToLower()) ...{ continue; } this.fileList.Add(info1.FullName); } } } } catch (Exception exception1) ...{ FileAndFolderList.WriteErrLog(exception1.Message); } } [STAThread] private static void Main(string[] args) ...{ //放置工程源代码的路径 DirectoryInfo info1 = new DirectoryInfo(Directory.GetParent(Directory.GetParent(Application.StartupPath).FullName).FullName); FileAndFolderList list1 = new FileAndFolderList(); ArrayList list2 = new ArrayList(); //项目文件后缀名 list2.Add(".cs"); list1.Enumerate(info1, list2); Console.WriteLine("Get File List OK!"); Console.WriteLine("Total target Files = " + list1.fileList.Count.ToString()); Console.WriteLine("Waiting for counting...nnn"); list1.Count(); FileAndFolderList.PrintValues(list1.fileList); FileAndFolderList.PrintValues(list1.lineCountList); Console.WriteLine("n"); Console.WriteLine("Get s Line Count OK!"); Console.WriteLine("Total lines Count = " + list1.sum.ToString()); Console.WriteLine("Press enter to exit!"); Console.ReadLine(); } public static void PrintValues(IEnumerable myList) ...{ IEnumerator enumerator1 = myList.GetEnumerator(); while (enumerator1.MoveNext()) ...{ Console.Write("t{0}", enumerator1.Current); } } private static void WriteErrLog(string msg) ...{ string text1 = Application.StartupPath + @"ErrorLog.Text"; StreamWriter writer1 = new StreamWriter(text1, true); writer1.WriteLine(DateTime.Now.ToLongDateString() + "t" + msg); writer1.Close(); } // Fields private ArrayList fileList; private ArrayList lineCountList; private int sum; } }