递归获取目录下所需要类型文件的路径集合(分类后的)

没有做通用性修改,直接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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值