C# Directory.EnumerateDirectories的代码示例

通过代码示例来学习C# Directory.EnumerateDirectories方法

通过代码示例来学习编程是非常高效的。
1. 代码示例提供了一个具体而直观的学习环境,使初学者能够立即看到编程概念和语法的实际应用。
2. 通过分析和模仿现有的代码实例,初学者可以更好地理解编程逻辑和算法的工作原理。
3. 代码实例往往涵盖了多种编程技巧和最佳实践,通过学习和模仿这些实例,学习者可以逐步掌握如何编写高效、可读性强和可维护的代码。这对于初学者来说,是一种快速提升编程水平的有效途径。


Directory.EnumerateDirectories是C#的System.IO命名空间下中的一个方法, 小编为大家找了一些网络大拿们常见的代码示例,源码中的Directory.EnumerateDirectories() 已经帮大家高亮显示了,大家可以重点学习Directory.EnumerateDirectories() 方法的写法,从而快速掌握该方法的应用。

Directory.EnumerateDirectories的代码示例1 - LogLooseObjectCount()

    using System.IO;

        private void LogLooseObjectCount(string sourceRoot, string targetRoot, string folderName, string logfile)
        {
            try
            {
                if (!Directory.Exists(targetRoot))
                {
                    Directory.CreateDirectory(targetRoot);
                }

                string objectFolder = Path.Combine(sourceRoot, folderName);
                string targetLog = Path.Combine(targetRoot, logfile);

                List lines = new List();

                if (Directory.Exists(objectFolder))
                {
                    DirectoryInfo objectDirectory = new DirectoryInfo(objectFolder);

                    int countLoose = 0;
                    int countFolders = 0;

                    lines.Add($"Object directory stats for {objectFolder}:");

                    foreach (DirectoryInfo directory in objectDirectory.EnumerateDirectories())
                    {
                        if (GitObjects.IsLooseObjectsDirectory(directory.Name))
                        {
                            countFolders++;
                            int numObjects = directory.EnumerateFiles().Count();
                            lines.Add($"{directory.Name} : {numObjects, 7} objects");
                            countLoose += numObjects;
                        }
                    }

                    lines.Add($"Total: {countLoose} loose objects");
                }

                File.WriteAllLines(targetLog, lines.ToArray());
            }
            catch (Exception e)
            {
                this.WriteMessage(string.Format(
                    "Failed to log loose object count for {0} in {1} with exception {2}. logfile: {3}",
                    folderName,
                    sourceRoot,
                    e,
                    logfile));
            }
        }
    

开发者ID:microsoft,项目名称:VFSForGit,代码行数:51,代码来源:DiagnoseVerb.cs

在LogLooseObjectCount()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例2 - MainCore()

    using System.IO;

        public static IList MainCore(RazorProjectEngine projectEngine, string targetProjectDirectory)
        {
            var viewDirectories = Directory.EnumerateDirectories(targetProjectDirectory, "Views", SearchOption.AllDirectories);
            var fileCount = 0;

            var results = new List();
            foreach (var viewDir in viewDirectories)
            {
                Console.WriteLine();
                Console.WriteLine("  Generating code files for views in {0}", viewDir);
                var viewDirPath = viewDir.Substring(targetProjectDirectory.Length).Replace('\\', '/');
                var cshtmlFiles = projectEngine.FileSystem.EnumerateItems(viewDirPath);

                if (!cshtmlFiles.Any())
                {
                    Console.WriteLine("  No .cshtml files were found.");
                    continue;
                }

                foreach (var item in cshtmlFiles)
                {
                    Console.WriteLine("    Generating code file for view {0}...", item.FileName);
                    results.Add(GenerateCodeFile(projectEngine, item));
                    Console.WriteLine("      Done!");
                    fileCount++;
                }
            }

            return results;
        }
    

开发者ID:aspnet,项目名称:Razor,代码行数:32,代码来源:Program.cs

在MainCore()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例3 - AddAssembly()

    using System.IO;

        public string AddAssembly(string filePath)
        {
            var assemblyDirectory = CreateUniqueDirectory();

            var destination = Path.Combine(assemblyDirectory, Path.GetFileName(filePath));
            CopyFile(filePath, destination);
            
            var fileNameWithoutExtension = Path.GetFileNameWithoutExtension(filePath);
            var resourcesNameWithoutExtension = fileNameWithoutExtension + ".resources";
            var resourcesNameWithExtension = resourcesNameWithoutExtension + ".dll";

            foreach (var directory in Directory.EnumerateDirectories(Path.GetDirectoryName(filePath)))
            {
                var directoryName = Path.GetFileName(directory);

                var resourcesPath = Path.Combine(directory, resourcesNameWithExtension);
                if (File.Exists(resourcesPath))
                {
                    var resourcesShadowCopyPath = Path.Combine(assemblyDirectory, directoryName, resourcesNameWithExtension);
                    CopyFile(resourcesPath, resourcesShadowCopyPath);
                }

                resourcesPath = Path.Combine(directory, resourcesNameWithoutExtension, resourcesNameWithExtension);
                if (File.Exists(resourcesPath))
                {
                    var resourcesShadowCopyPath = Path.Combine(assemblyDirectory, directoryName, resourcesNameWithoutExtension, resourcesNameWithExtension);
                    CopyFile(resourcesPath, resourcesShadowCopyPath);
                }
            }

            return destination;
        }
    

开发者ID:aspnet,项目名称:Razor,代码行数:34,代码来源:ShadowCopyManager.cs

在AddAssembly()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例4 - TakeOwnDirectory()

    using System.IO;
        public static void TakeOwnDirectory(string path)
        {
            DirectoryInfo directoryInfo = new(path);
            DirectorySecurity directorySecurity = directoryInfo.GetAccessControl();

            directorySecurity.SetOwner(WindowsIdentity.GetCurrent().User);

            Privilege p = new(Privilege.TakeOwnership);
            bool ownershipTaken = false;
            try
            {
                p.Enable();

                new DirectoryInfo(path).SetAccessControl(directorySecurity);
                ownershipTaken = true;
            }
            catch (Privileges.PrivilegeNotHeldException e)
            {
                Console.WriteLine("Failed to assign privileges. " + e.ToString());
            }
            finally
            {
                p.Revert();
            }

            if (ownershipTaken)
            {
                AdjustPermissionsForDirectory(path);

                foreach (string subFile in (System.Collections.Generic.IEnumerable)Directory.EnumerateFiles(path))
                {
                    TakeOwnFile(subFile);
                }

                foreach (string subDir in (System.Collections.Generic.IEnumerable)Directory.EnumerateDirectories(path))
                {
                    TakeOwnDirectory(subDir);
                }
            }
        }
    

开发者ID:gus33000,项目名称:UUPMediaCreator,代码行数:41,代码来源:TakeOwn.cs

在TakeOwnDirectory()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例5 - IntegrateSetupFilesIntoImage()

    using System.IO;

        private static bool IntegrateSetupFilesIntoImage(
            string MediaPath,
            TempManager tempManager,
            ProgressCallback progressCallback = null
            )
        {
            string bootwim = Path.Combine(MediaPath, "sources", "boot.wim");

            //
            // Adding missing files in index 2
            //
            progressCallback?.Log("Preparing assets for Setup PE");

            string bgfile = new[] { "background_cli.bmp", "background_svr.bmp", "background_cli.png", "background_svr.png" }
            .Select(asset => Path.Combine(MediaPath, "sources", asset))
            .FirstOrDefault(File.Exists);

            string winpejpgtmp = tempManager.GetTempPath();
            File.WriteAllBytes(winpejpgtmp, Constants.winpejpg);

            List<(string fileToAdd, string destination)> updateDirectives = new()
            {
                (bgfile, Path.Combine("Windows", "System32", "setup.bmp")),
                (winpejpgtmp, Path.Combine("Windows", "System32", "winpe.jpg"))
            };

            progressCallback?.Log("Backporting missing files");

            IEnumerable dirs = Directory.EnumerateDirectories(Path.Combine(MediaPath, "sources"), "??-??");
            if (!dirs.Any())
            {
                dirs = Directory.EnumerateDirectories(Path.Combine(MediaPath, "sources"), "*-*");
            }
            string langcode = dirs.First().Replace(Path.Combine(MediaPath, "sources") + Path.DirectorySeparatorChar, "");

            foreach (string file in IniReader.SetupFilesToBackport)
            {
                string normalizedPath = file.Replace("??-??", langcode);
                string matchingfile = Path.Combine(MediaPath, normalizedPath);

                string sourcePath = file == $"sources{Path.DirectorySeparatorChar}background.bmp" ? bgfile : matchingfile;

                if (File.Exists(sourcePath))
                {
                    progressCallback?.Log($"Queueing {normalizedPath}");

                    updateDirectives.Add((sourcePath, normalizedPath));
                }
                else
                {
                    progressCallback?.Log($"Skipping missing {normalizedPath}");
                }
            }
            bool result = Constants.imagingInterface.UpdateFilesInImage(bootwim, 2, updateDirectives, progressCallback: progressCallback?.GetImagingCallback());
            File.Delete(winpejpgtmp);

            return result;
        }
    

开发者ID:gus33000,项目名称:UUPMediaCreator,代码行数:60,代码来源:WindowsInstallerBuilder.cs

在IntegrateSetupFilesIntoImage()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了2次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例6 - EnumerateFiles()

    using System.IO;

        IEnumerable EnumerateFiles(string path, string searchPattern, SearchOption searchOpt) {
            try {
                var dirFiles = Enumerable.Empty();
                if (searchOpt == SearchOption.AllDirectories && IsFolderValid(path)) {
                    dirFiles = Directory.EnumerateDirectories(path)
                                            .SelectMany(x => EnumerateFiles(x, searchPattern, searchOpt)
                                            .Where(fi => EndsWithExtension(fi) && IsFolderValid(fi))
                                        );

                }
                return dirFiles.Concat(Directory.EnumerateFiles(path, searchPattern).Where(fi => EndsWithExtension(fi)));

            } catch (UnauthorizedAccessException ex) {
                return Enumerable.Empty();

            } catch (PathTooLongException ex) {
                // Microsoft solution: https://docs.microsoft.com/en-us/dotnet/standard/io/how-to-enumerate-directories-and-files
                Console.WriteLine("[!] {0} is too long. Continuing with next directory.", path);
                return Enumerable.Empty();

            } catch (System.IO.IOException ex) {
                return Enumerable.Empty();

            }
        }
    

开发者ID:vivami,项目名称:SauronEye,代码行数:27,代码来源:Searcher.cs

在EnumerateFiles()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例7 - Parse()

    using System.IO;
        /// 
        /// Parse plugin metadata in the given directories
        /// 
        /// 
        /// 
        public static List Parse(string[] pluginDirectories)
        {
            var allPluginMetadata = new List();
            var directories = pluginDirectories.SelectMany(Directory.EnumerateDirectories);

            // todo use linq when diable plugin is implmented since parallel.foreach + list is not thread saft
            foreach (var directory in directories)
            {
                if (File.Exists(Path.Combine(directory, "NeedDelete.txt")))
                {
                    try
                    {
                        Directory.Delete(directory, true);
                    }
                    catch (Exception e)
                    {
                        Log.Exception($"|PluginConfig.ParsePLuginConfigs|Can't delete <{directory}>", e);
                    }
                }
                else
                {
                    PluginMetadata metadata = GetPluginMetadata(directory);
                    if (metadata != null)
                    {
                        allPluginMetadata.Add(metadata);
                    }
                }
            }

            (List uniqueList, List duplicateList) = GetUniqueLatestPluginMetadata(allPluginMetadata);

            duplicateList
                .ForEach(
                    x => Log.Warn("PluginConfig",
                                    string.Format("Duplicate plugin name: {0}, id: {1}, version: {2} " +
                                                    "not loaded due to version not the highest of the duplicates",
                                                    x.Name, x.ID, x.Version),
                                                    "GetUniqueLatestPluginMetadata"));

            return uniqueList;
        }
    

开发者ID:Flow-Launcher,项目名称:Flow.Launcher,代码行数:47,代码来源:PluginConfig.cs

在Parse()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了1次, 见黄色背景高亮显示的地方,欢迎大家点赞

Directory.EnumerateDirectories的代码示例8 - FromXml()

    using System.IO;
        #endregion

        #region Methods used to convert to/from XML
        //=====================================================================

        /// 
        /// This is used to load the settings for an assembly location from an XML element
        /// 
        /// The XML element containing the settings
        /// The new assembly location item
        /// If the location element is empty, the assembly details will be created by scanning the
        /// location for assemblies.
        internal static AssemblyLocation FromXml(XElement location)
        {
            AssemblyLocation al = new AssemblyLocation(location.Attribute("Path").Value);

            try
            {
                if(!Directory.Exists(al.Path))
                {
                    string path = IOPath.GetDirectoryName(al.Path);

                    // .NETCore and .NET 5+ folders may not exist if the user hasn't got the version used in the
                    // reflection data set installed.  In such cases, use the latest one installed.
                    if(path.EndsWith(@"\ref", StringComparison.OrdinalIgnoreCase))
                    {
                        path = IOPath.GetDirectoryName(IOPath.GetDirectoryName(path));

                        var latestVersion = Directory.EnumerateDirectories(path).Select(
                            p => new { Version = IOPath.GetFileName(p), Path = p }).Where(p =>
                                Version.TryParse(p.Version, out _)).OrderByDescending(p => p.Version).FirstOrDefault();

                        if(latestVersion != null)
                        {
                            path = IOPath.Combine(latestVersion.Path, "ref");

                            if(Directory.Exists(path))
                            {
                                path = Directory.EnumerateDirectories(path).FirstOrDefault();

                                if(path != null)
                                    al = new AssemblyLocation(path);
                            }
                        }
                    }
                }
            }
            catch(Exception ex)
            {
                // Ignore exceptions and just use the path given
                System.Diagnostics.Debug.WriteLine(ex);
            }

            foreach(var a in location.Descendants("AssemblyDetails"))
                al.assemblyDetails.Add(AssemblyDetails.FromXml(al.Path, a));

            return al;
        }
    

开发者ID:EWSoftware,项目名称:SHFB,代码行数:59,代码来源:AssemblyLocation.cs

在FromXml()方法中,Directory的代码示例类中的EnumerateDirectories的代码示例方法一共出现了2次, 见黄色背景高亮显示的地方,欢迎大家点赞

本文中的Directory.EnumerateDirectories方法示例由csref.cn整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。