在机器上寻找指定的目录 DirectoryInfo 差点意思 只好写个 嵌套 完成

有时需要  找特定的目录  比如  "Network\Admin"   ( 不知用户  按了几个版本的oracle   若干目录  在机器上)

本来一个  DirectoryInfo  就可以解决问题。 但在使用中发现 很多目录 没权读  为此 DirectoryInfo  就歇了

只好写一个小的嵌套  一级一级的找   把程序  晒在这里供大家参考

// 在机器上找指定的目录
            string all_dirs = "";
            //所有的 硬盘  除了   CD  (CDFS)可以加其他的限制
            foreach (var d_v in System.IO.DriveInfo.GetDrives().Where(p=>p.DriveFormat !="CDFS"))
            {
                //从每一个盘的根开始找 l例如  c;\   Admin 是要找的目录
                all_dirs += get_dir(new DirectoryInfo(d_v.Name), @"Network\Admin");
            }
            //你得到了
            var dd = all_dirs.TrimEnd('!').Split('!');

///

      /// <summary>
        /// 嵌套  往下找  找到返回完整目录  没有  就给 空
        /// </summary>
        /// <param name="d_dir"></param>   这是一个DirectoryInfo
        /// <param name="s_search"></param> 这是要找的  目录段
        /// <returns></returns>
        string get_dir(DirectoryInfo d_dir ,string s_search)
        {
            //现设一下空
            string t_tt="";
            try
            {
                //得到当前目录下的子目录 之一是下一及 如果没权  或其他问题  就不玩了  返回空
                var dir_s = d_dir.GetDirectories();
                //判断每一个子目录 如果有的话
                foreach (var dd_dir in dir_s)
                {
                    //如果子目录的结尾等于 要找的目录  就返回这个完整的目录
                    if (dd_dir.FullName.EndsWith(s_search))
                    {
                        t_tt +=  dd_dir.FullName+"!";
                    }
                    //如果 目录是"$" 开头   就不找这个目录的子目录了
                    else if (dd_dir.Name.StartsWith("$"))
                    {
                   
                    }
                    else
                    {
                        //把这子目录当爹  用 get_dir 找他儿子(他的子目录)
                        t_tt +=   get_dir(new DirectoryInfo(dd_dir.FullName), s_search); 
                    }
                }
                //返回找到的结果
                return t_tt;
            }
            catch
            {
                //有错直接返回  比如  没有权读。。。
                return t_tt;
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值