没有做通用性修改,直接copy自己项目中用的代码了,有点草,各位尽可以改装。
我这个是一个直接执行的方法,传入参数是一个DirectoryInfo的对象, 一个存放数据的空字典对象。
我需要组装的文件只有.sql和.csv。
好了, 直接上码~ (注意提前引用相关命名空间)
/// <summary>
/// 递归获取目录下所有需要的文件路径信息的分类集合/// </summary>
/// <param name="dirInfo"></param>
/// <param name="directorys"></param>
private void DisplayItems(DirectoryInfo dirInfo, List<Dictionary<string, List<string>>> directorys)
{
Dictionary<string, List<string>> dirList = null;
List<string> sqlFiles = null;
List<string> dataFiles = null;
List<DirectoryInfo> directoryList = dirInfo.GetDirectories().ToList();
directoryList.Add(dirInfo);
foreach (DirectoryInfo dir in directoryList)
{
if (dir.GetFiles().Length > 0)
{
dirList = new Dictionary<string, List<string>>();
sqlFiles = new List<string>();
dataFiles = new List<string>();
string currentPath = dir.FullName;
foreach (FileInfo file in dir.GetFiles())
{
if (".sql".Equals(file.Extension))
{
sqlFiles.Add(file.FullName);
}
if (".csv".Equals(file.Extension))
{
dataFiles.Add(file.FullName);
}
}
dirList["sql"] = sqlFiles;
dirList["data"] = dataFiles;
directorys.Add(dirList);
}
if (dir != dirInfo && dir.GetDirectories().Length > 0)
{
DisplayItems(dir, directorys);
}
}
}
///下面是一个应用的方法(方式
/// <summary>
/// 根据路径获取所有指定格式文件的全路径集合
/// </summary>
/// <param name="path"> 路径 </param>
/// <returns>各个目录的文件路径集合</returns>
public List<Dictionary<string, List<string>>> GetAllFilePathByPath(string path)
{
DirectoryInfo dirInfo = new DirectoryInfo(path);
List<Dictionary<string, List<string>>> directorys = new List<Dictionary<string, List<string>>>();
DisplayItems(dirInfo, directorys);
return directorys;
})
///OVER