C#编程-29:循环访问目录树

简介: C#编程-29:循环访问目录树
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileClass
{
    class Program
    {
        static System.Collections.Specialized.StringCollection log = new System.Collections.Specialized.StringCollection();
        static void Main(string[] args)
        {
            //获取逻辑分区
            string[] drives = System.Environment.GetLogicalDrives();
            foreach (string d in drives)
            {
                System.IO.DriveInfo di=new System.IO.DriveInfo(d);
                //排除
                if (!di.IsReady)
                {
                    Console.WriteLine("drive is not ready:{0}",di);
                    continue;
                }
                    Console.WriteLine("drive is ready:{0}", di);
                    DirectoryInfo dirRoot = di.RootDirectory;
                    WalkDirectoryTree(dirRoot);
            }
            Console.WriteLine("exception:");
            foreach (string s in log)
            {
                Console.WriteLine(s);
                StreamWriter writer = new StreamWriter(@"C:\Users\PSY\Desktop\list.txt", true, Encoding.Default);
                writer.WriteLine(s);
                writer.Close();
            }
            Console.ReadKey();
        }
        ///
        /// 遍历文件夹
        ///
        ///
        public static void WalkDirectoryTree(System.IO.DirectoryInfo root)
        {
            System.IO.FileInfo[] files = null;
            System.IO.DirectoryInfo[] subDirs = null;
            try
            {
                files = root.GetFiles("*.*");
            }
            catch (UnauthorizedAccessException e)
            {
                log.Add(e.Message);
            }
            catch(DirectoryNotFoundException e)
            {
                Console.WriteLine(e.Message);
            }
            if (files != null)
            {
                foreach (FileInfo fi in files)
                {
                    Console.WriteLine(fi.FullName);
                    StreamWriter writer = new StreamWriter(@"C:\Users\PSY\Desktop\list.txt",true,Encoding.Default);
                    writer.WriteLine(fi.FullName);
                    writer.Close();
                }
                //递归调用
                subDirs = root.GetDirectories();
                foreach (DirectoryInfo dirInfo in subDirs)
                {
                    WalkDirectoryTree(dirInfo);
                }
            }
        }
    }
}

关键笔记:

1、获取本机逻辑分区:

string[] drives = System.Environment.GetLogicalDrives();


2、获取所有文件:(DirectoryInfo dir)

FileInfo[] fileInfo = dir.GetFiles();


3、获取所有目录:(DirectoryInfo dir)

DirectoryInfo[] directoryInfo = dir.GetDirectories();

相关文章
|
3月前
|
存储 安全 算法
基于 C# Trie 树的'管控员工上网 URL 过滤与匹配优化方案探索
本文探讨了 Trie 树在员工上网管控中的应用,分析其在 URL 实时过滤中的高效性,包括前缀匹配、存储优化和动态更新等优势,并提供 C# 实现方案,助力企业提升网络管理效率。
77 0
|
2月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
139 19
|
27天前
|
存储 机器学习/深度学习 监控
网络管理监控软件的 C# 区间树性能阈值查询算法
针对网络管理监控软件的高效区间查询需求,本文提出基于区间树的优化方案。传统线性遍历效率低,10万条数据查询超800ms,难以满足实时性要求。区间树以平衡二叉搜索树结构,结合节点最大值剪枝策略,将查询复杂度从O(N)降至O(logN+K),显著提升性能。通过C#实现,支持按指标类型分组建树、增量插入与多维度联合查询,在10万记录下查询耗时仅约2.8ms,内存占用降低35%。测试表明,该方案有效解决高负载场景下的响应延迟问题,助力管理员快速定位异常设备,提升运维效率与系统稳定性。
104 4
|
3月前
|
监控 算法 C#
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
C#与Halcon联合编程实现鼠标控制图像缩放、拖动及ROI绘制
443 0
|
4月前
|
监控 算法 安全
基于 C# 基数树算法的网络屏幕监控敏感词检测技术研究
随着数字化办公和网络交互迅猛发展,网络屏幕监控成为信息安全的关键。基数树(Trie Tree)凭借高效的字符串处理能力,在敏感词检测中表现出色。结合C#语言,可构建高时效、高准确率的敏感词识别模块,提升网络安全防护能力。
107 2
|
6月前
|
存储 监控 算法
局域网上网记录监控的 C# 基数树算法高效检索方案研究
在企业网络管理与信息安全领域,局域网上网记录监控是维护网络安全、规范网络行为的关键举措。随着企业网络数据量呈指数级增长,如何高效存储和检索上网记录数据成为亟待解决的核心问题。基数树(Trie 树)作为一种独特的数据结构,凭借其在字符串处理方面的卓越性能,为局域网上网记录监控提供了创新的解决方案。本文将深入剖析基数树算法的原理,并通过 C# 语言实现的代码示例,阐述其在局域网上网记录监控场景中的具体应用。
145 7
|
12月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
231 3
|
安全 编译器 程序员
C# 中 foreach 循环和 for 循环深度比较
为什么建议你多数情况下使用 foreach 进行遍历循环?看完你就明白了
317 5
|
11月前
|
存储 安全 编译器
学懂C#编程:属性(Property)的概念定义及使用详解
通过深入理解和使用C#的属性,可以编写更清晰、简洁和高效的代码,为开发高质量的应用程序奠定基础。
715 12
|
12月前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
458 4