Allen.Util.CSharpRefTree.SampleFileSearcher.SearchFiles C# (CSharp) Метод

SearchFiles() публичный статический Метод

搜索文件,返回绝对路径
public static SearchFiles ( string searchingPah, string filter, bool isRecursive = true ) : List
searchingPah string
filter string
isRecursive bool
Результат List
        public static List<string> SearchFiles(string searchingPah, string filter, bool isRecursive = true)
        {
            var result = new List<string>();

            var dirs = searchingPah.Split('|');
            foreach (var dir in dirs)
            {
                if (!Directory.Exists(dir))
                {
                    Console.WriteLine($"File Searching Paht :{dir} not exist");
                    continue;
                }
                var rootDir = new DirectoryInfo(dir);

                var patterns = filter.Split('|');
                foreach (var pattern in patterns)
                {
                    result.AddRange(rootDir.GetFiles(pattern,
                        isRecursive ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)
                        .Select(file => file.FullName));
                }
            }
            return result;
        }
    }

Usage Example

Пример #1
0
        static void Main(string[] args)
        {
            //Application.EnableVisualStyles();
            //Application.SetCompatibleTextRenderingDefault(false);
            //Application.Run(new Form1());

            //AssemblyPath = EverythingFileSearcher.Searcher.Search(string.Format(@"{0}\Ref\bin !{0}\Ref\bin\3rd (.dll|.exe)", InitPath)).ToList();
            AssemblyPath = SampleFileSearcher.SearchFiles($@"{InitPath}\Ref\Bin\Lib|{InitPath}\Ref\Bin\Impl", "*.dll|*.exe");
            Console.WriteLine(Resources.Program_Main_Total_file_count__0__, AssemblyPath.Count);
            prjInfoDic         = new Dictionary <string, PrjInfo>();
            prjInfoFileNameDic = new Dictionary <string, PrjInfo>();
            errorPrjInfo       = new List <PrjInfo>();
            root = new List <PrjInfo>();
            AssemblyPath.ForEach(assPath =>
            {
                if (!assPath.EndsWith("dll") && !assPath.EndsWith("exe"))
                {
                    return;
                }
                CreatePrjInfo(assPath);
            }
                                 );
            Console.WriteLine(Resources.Program_Main_Total_aasembly_count__0_, prjInfoDic.Count);
            RebuildRef();


            var csprojFilePathList = SampleFileSearcher.SearchFiles($"{InitPath}\\Src", "*.csproj");


            foreach (var csprjFile in csprojFilePathList)
            {
                var analyzer = new ProjectAnalyzer(csprjFile);
                var assName  = analyzer.GetAssemblyName();

                if (string.IsNullOrEmpty(assName))
                {
                    Console.WriteLine($"Prj File {csprjFile} could not output a assembly");
                    continue;
                }
                if (!prjInfoFileNameDic.ContainsKey(assName))
                {
                    Console.WriteLine($"Prj File {csprjFile} output assembly:{assName} did not registed");
                    continue;
                }
                var pf      = new FileInfo(csprjFile);
                var prjInfo = prjInfoFileNameDic[assName];
                prjInfo.PrjFilePath = pf.DirectoryName;
                prjInfo.PrjFileName = pf.Name;
            }
            PrintAss();
        }
SampleFileSearcher