获取指定路径下的文件类型及数量

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
using System;
using System.Collections.Generic;
using System.IO;

namespace FileExtensionScan
{
class Program
{
Dictionary<String, int> pList = new Dictionary<String, int>(); //字典形式{后缀:数量}
int fileNum = 0;

public void GetFileNum(string srcPath)
{
try
{
// 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组
string[] fileList = System.IO.Directory.GetFileSystemEntries(srcPath);
// 遍历所有的文件和目录
foreach (string file in fileList)
{
// 先当作目录处理如果存在这个目录就重新调用GetFileNum(string srcPath)
if (Directory.Exists(file))
GetFileNum(file);
else
{
fileNum++;
string ext = Path.GetExtension(file).ToLower();
if (pList.ContainsKey(ext) == false)
pList.Add(ext, 1);
else
pList[ext]++;
}
}

}
catch (Exception e)
{
Console.WriteLine(e.ToString());
}
}

static void Main(string[] args)
{
Program p = new Program();
p.GetFileNum(args[0]); //获取目录路径,第一个命令行参数
Console.WriteLine("扫描文件数目" + p.fileNum); //扫描文件总数

foreach (var dic in p.pList)
{
Console.WriteLine("{0} {1}", dic.Key, dic.Value);
}
}
}
}