1.具体操作包括:
①.获取指定文件夹目录下所有文件的完整路径
②.获取文件夹下所有文件的完整路径(包括子文件夹)
③.获取文件夹下指定后缀文件的所有
④.获取文件夹下指定后缀文件的所有(包括子文件夹)
2.完整代码
using log4net; using log4net.Config; using System; using System.Collections.Generic; using System.Configuration; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; namespace DirPathFile { class Program { static void Main(string[] args) { InitLog4net(); var log = LogManager.GetLogger(typeof(Program)); // excel命名 //string PathExcel = $"{Guid.NewGuid().ToString()}.xlsx"; #region 获取指定文件夹下所有文件的完整路径 // 得到源目录的文件列表,该里面是包含文件以及目录路径的一个数组 //string strPathp = @"E:\1\"; //DirectoryInfo infor = new DirectoryInfo(strPathp); //string[] fileList = Directory.GetFileSystemEntries(strPathp); //foreach (string item in fileList) //{ // FileInfo fi = new FileInfo(item); // if (fi.Extension != " ") // 获取路径下的所有文件路径 // { // Console.WriteLine(fi.FullName); // } //} //Console.WriteLine($"当前获取到的文件总数:{GetFilesCount(infor)}"); //Console.ReadKey(); #endregion #region 获取文件夹目录下所有文件的完整路径 var strPaths = ConfigurationManager.AppSettings["dirPath"]; List<FileInfo> lst = new List<FileInfo>(); List<FileInfo> lstfiles = GetInfo(strPaths, lst); DirectoryInfo info = new DirectoryInfo(strPaths); foreach (FileInfo item in lstfiles) { Console.WriteLine(item); } Console.WriteLine($"当前获取到的文件总数:{GetFilesCount(info)}"); Console.ReadKey(); #endregion #region 获取文件夹目录下所有文件的完整路径(包括子文件夹目录) //var strPaths = ConfigurationManager.AppSettings["dirPath"]; //List<string> lst = GetInfoPath(strPaths); //DirectoryInfo DI = new DirectoryInfo(strPaths); //foreach (var item in lst) //{ // Console.WriteLine(item); //} //Console.WriteLine($"当前获取到的文件总数:{GetFilesCount(DI)}"); //Console.ReadKey(); #endregion #region 获取文件夹目录下指定后缀文件 // 获取文件夹下的指定后缀文件 //Console.WriteLine("--获取文件夹下的指定后缀文件--"); //string strPath = @"E:\1\"; //DirectoryInfo info = new DirectoryInfo(strPath); //List<FileInfo> lstfile = GetFile(strPath, ".jpg"); //foreach (FileInfo item in lstfile) //{ // Console.WriteLine(item); //} //Console.WriteLine($"当前获取到的文件总数:{GetFilesCount(info)}"); //Console.ReadKey(); #endregion #region 获取文件夹目录下指定后缀文件(包括子文件夹) //获取文件夹与子文件夹下的指定后缀文件 //log.Info("--获取文件夹与子文件夹下的指定后缀文件--"); //var strPaths = ConfigurationManager.AppSettings["dirPath"]; //List<FileInfo> lst = new List<FileInfo>(); //List<FileInfo> lstfiles = GetFiles(strPaths, ".jpg", ref lst); //DirectoryInfo info = new DirectoryInfo(strPaths); //foreach (FileInfo item in lstfiles) //{ // log.Info(item); //} //log.InfoFormat("当前获取到的文件总数:{0}", GetFilesCount(info)); //Console.ReadKey(); #endregion #region directoryinfo与directory说明 //1.directory是公开建立、移动和全面列举目录和子目录的静态方法。 //2.directoryinfo是公开建立、移动和全面列举目录和子目录的执行个体(Instance) 方法。 //3.一个是公用的静态类,一个是实例类 #endregion #region 获取指定目录包含的文件和子目录 // 1.DirectoryInfo.GetFiles():获取目录中(不包含子目录)的文件,返回类型为FileInfo[],支持通配符查找; // 2.DirectoryInfo.GetDirectories():获取目录(不包含子目录)的子目录,返回类型为DirectoryInfo[],支持通配符查找; // 3.DirectoryInfo.GetFileSystemInfos():获取指定目录下(不包含子目录)的文件和子目录,返回类型为FileSystemInfo[],支持通配符查找; #endregion #region 获取指定文件的基本信息 //1.FileInfo.Exists:获取指定文件是否存在; //2.FileInfo.Name,FileInfo.Extensioin:获取文件的名称和扩展名; //FileInfo.FullName:获取文件的全限定名称(完整路径); //FileInfo.Directory:获取文件所在目录,返回类型为DirectoryInfo; //FileInfo.DirectoryName:获取文件所在目录的路径(完整路径); //FileInfo.Length:获取文件的大小(字节数); //FileInfo.IsReadOnly:获取文件是否只读; //FileInfo.Attributes:获取或设置指定文件的属性,返回类型为FileAttributes枚举,可以是多个值的组合 //FileInfo.CreationTime、FileInfo.LastAccessTime、FileInfo.LastWriteTime:分别用于获取文件的创建时间、访问时间、修改时间; #endregion } #region 获取指定文件夹下的指定后缀文件 /// <summary> /// 获取文件夹下的莫个后缀的所有文件 /// </summary> /// <param name="path">文件路劲</param> /// <param name="ExtName">文件后缀</param> /// <returns></returns> public static List<FileInfo> GetFile(string path, string ExtName) { try { List<FileInfo> lst = new List<FileInfo>(); string[] dir = Directory.GetDirectories(path);// 文件夹列表 DirectoryInfo directoryInfo = new DirectoryInfo(path); FileInfo[] files = directoryInfo.GetFiles(); if (files.Length != 0 || dir.Length != 0) // 当前目录文件或文件夹不能为空 { foreach (FileInfo f in files) { if (ExtName.ToLower().IndexOf(f.Extension.ToLower()) >= 0) { lst.Add(f); } } foreach (string d in dir) { GetFile(d, ExtName); } } return lst; } catch (Exception ex) { throw ex; } } #endregion #region 获取指定文件夹下的指定后缀文件后缀(包括获取子文件下的) /// <summary> /// 获取指定文件夹下的指定后缀文件后缀(包括获取子文件下的) /// </summary> /// <param name="path">文件夹路径</param> /// <param name="ExtName">文件后缀</param> /// <param name="lst"></param> /// <returns></returns> public static List<FileInfo> GetFiles(string path, string ExtName, ref List<FileInfo> lst) { try { //List<FileInfo> lst = new List<FileInfo>(); string[] dir = Directory.GetDirectories(path);// 文件夹列表 DirectoryInfo directoryInfo = new DirectoryInfo(path); FileInfo[] files = directoryInfo.GetFiles(); if (files.Length != 0 || dir.Length != 0) // 当前目录文件或文件夹不能为空 { foreach (FileInfo f in files) { if (ExtName.ToLower().IndexOf(f.Extension.ToLower()) >= 0) { lst.Add(f); } } foreach (string d in dir) { GetFiles(d, ExtName, ref lst); } } return lst; } catch (Exception ex) { throw ex; } } #endregion #region 获取文件夹下所有文件的完整路径 /// <summary> /// 获取文件夹下所有文件的完整路径 /// </summary> /// <param name="path">路径</param> /// <param name="lst">返回参数</param> /// <returns></returns> private static List<FileInfo> GetInfo(string path, List<FileInfo> lst) { try { //string[] dirInfo = Directory.GetDirectories(path); string[] fileList = Directory.GetFileSystemEntries(path); foreach (string item in fileList) { FileInfo fi = new FileInfo(item); if (fi.Extension != " ") // 获取路径下的所有文件路径 { lst.Add(fi); } } return lst; } catch (Exception ex) { throw ex; } } #endregion #region 获取文件夹下的所有文件的完整路径(包括子文件夹) static List<string> list = new List<string>();//定义list变量,存放获取到的路径 /// <summary> /// 获取文件夹下的所有文件的完整路径(包括子文件夹) /// </summary> /// <param name="path">文件路径</param> /// <returns></returns> public static List<string> GetInfoPath(string path) { DirectoryInfo dir = new DirectoryInfo(path); FileInfo[] fil = dir.GetFiles(); DirectoryInfo[] dii = dir.GetDirectories(); foreach (FileInfo f in fil) { list.Add(f.FullName);//添加文件的路径到列表 } //获取子文件夹内的文件列表,递归遍历 foreach (DirectoryInfo d in dii) { GetInfoPath(d.FullName); list.Add(d.FullName);//添加文件夹的路径到列表 } return list; } #endregion #region 获取当前目录下的文件总数 /// <summary> /// 获取文件夹下的文件总数 /// </summary> /// <param name="dirInfo"></param> /// <returns></returns> public static int GetFilesCount(DirectoryInfo dirInfo) { int totalFile = 0; totalFile += dirInfo.GetFiles().Length; foreach (DirectoryInfo f in dirInfo.GetDirectories()) { totalFile += GetFilesCount(f); } return totalFile; } #endregion #region Log日志 private static void InitLog4net() { var log = new FileInfo(AppDomain.CurrentDomain.BaseDirectory + "Log4net.config"); XmlConfigurator.ConfigureAndWatch(log); } #endregion } }