我们写程序经常要读取某一目录下有哪些文件,并且需要递归获取,下面分享一下我是怎么实现的。。
static bool ExistsDirectory(string direName)
{
return System.IO.Directory.Exists(direName);
}
/// <summary>
/// 递归获取某一目录下的符合条件的所有文件
/// </summary>
/// <param name="path">目录路径</param>
/// <param name="filter">要过滤的文件类型如m*或*.mp3等等不能为null</param>
/// <param name="isTiGui">是否递归获取</param>
/// <returns>所有文件</returns>
static List<string> _GetAllFilesFromPath(string path, string filter, bool isTiGui = true)
{
List<string> files = new List<string>();
if (!ExistsDirectory(path))
return files;
if (isTiGui)
{
string[] dirs = Directory.GetDirectories(path);//得到子目录
foreach (var str in dirs)
files.AddRange(GetAllFilesFromPath(str, filter, isTiGui));
}
string[] tempfiles = Directory.GetFiles(path, filter);
files.AddRange(tempfiles);
return files;
}
/// <summary>
/// 递归获取某一目录下的符合条件的所有文件
/// </summary>
/// <param name="path">目录路径</param>
/// <param name="filters">要过滤的文件类型如m*或*.mp3等等不能为null 多个用|,隔开</param>
/// <param name="isTiGui">是否递归获取</param>
/// <returns>所有文件</returns>
public static List<string> GetAllFilesFromPath(string path, string filters, bool isTiGui = true)
{
List<string> files = new List<string>();
if (!string.IsNullOrWhiteSpace(filters))
{
foreach (var item in filters.Split(new Char[] { ',', '|' }, StringSplitOptions.RemoveEmptyEntries))
{
var _files = _GetAllFilesFromPath(path, item, isTiGui);
foreach (var _file in _files)
{
files.Add(_file);
}
}
return files;
}
else
return GetAllFilesFromPath(path, isTiGui);
}
/// <summary>
/// 递归获取某一目录下的所有文件
/// </summary>
/// <param name="path">目录路径</param>
/// <param name="isTiGui">是否递归获取</param>
/// <returns>所有文件</returns>
public static List<string> GetAllFilesFromPath(string path, bool isTiGui = true)
{
return GetAllFilesFromPath(path, "*.*", isTiGui);
}
/// <summary>
/// 递归获取某一目录下的所有目录
/// </summary>
/// <param name="path">目录路径</param>
/// <param name="isTiGui">是否递归获取</param>
/// <returns>所有目录</returns>
public static List<string> GetAllDirectoriesFromPath(string path, bool isTiGui = true)
{
List<string> dirs = new List<string>();
string[] tempdirs = Directory.GetDirectories(path);//得到子目录
if (isTiGui)
foreach (var str in tempdirs)
dirs.AddRange(GetAllDirectoriesFromPath(str, isTiGui));
dirs.AddRange(tempdirs);
return dirs;
}
推荐一个在线工具 数学,圆周率,质数,合数,奇数,偶数,阶乘,约数,倍数,勾股数 域名由www.haomeili.net变为www.mz51.vip