方法重载

我们要实现这样一个功能:在命令行中输入相应的参数,第一个参数代表要遍历的路径,第二次参数表示在相应的路径下面,要遍历的文件类型,

存在下面几种情况:

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 }


 

posted @ 2013-01-18 10:39  天之涯,海之角  阅读(177)  评论(0编辑  收藏  举报