方法重载
我们要实现这样一个功能:在命令行中输入相应的参数,第一个参数代表要遍历的路径,第二次参数表示在相应的路径下面,要遍历的文件类型,
存在下面几种情况:
1、在命令行中没有输入任何参数(遍历当前应用程序所在目录,默认情况下,遍历*.cs文件)
2、在命令行中输入一个参数(遍历指定路径下的,所有*.cs文件)
3、在命令行中输入两个参数,中间用空格隔开(遍历指定路径下的,指定文件)
下面让我们来看一段代码实现这个功能:
1 using System; 2 using System.IO; 3 4 namespace OverLoad 5 { 6 public class Program 7 { 8 static void Main(string[] args) 9 { 10 int totalCountLine; 11 12 if (args.Length > 1) 13 { 14 totalCountLine = ExlporerDirectory(args[0], args[1]); 15 } 16 else if (args.Length > 0) 17 { 18 totalCountLine = ExlporerDirectory(args[0]); 19 } 20 else 21 { 22 totalCountLine = ExlporerDirectory(); 23 } 24 25 Console.WriteLine("当前遍历的类型文件总共行数:{0}", totalCountLine); 26 27 } 28 29 private static int ExlporerDirectory() 30 { 31 return ExlporerDirectory(Directory.GetCurrentDirectory()); 32 } 33 34 private static int ExlporerDirectory(string directory) 35 { 36 return ExlporerDirectory(directory, "*.cs"); 37 } 38 39 private static int ExlporerDirectory(string directory, string extension) 40 { 41 int totalLine = 0; 42 foreach (var file in Directory.GetFiles(directory, extension)) 43 { 44 totalLine += CalCountLine(file); 45 } 46 47 foreach (var subDirectory in Directory.GetDirectories(directory)) 48 { 49 totalLine += ExlporerDirectory(subDirectory); 50 } 51 return totalLine; 52 } 53 54 private static int CalCountLine(string file) 55 { 56 int lineCount = 0; 57 FileStream fs = File.Open(file, FileMode.Open); 58 var sr = new StreamReader(fs); 59 string line = sr.ReadLine(); 60 61 while (line != null) 62 { 63 lineCount++; 64 line = sr.ReadLine(); 65 } 66 67 sr.Close(); 68 fs.Close(); 69 return lineCount; 70 } 71 72 } 73 }