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();


参考链接:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/file-system/how-to-iterate-through-a-directory-tree

相关文章
|
存储 负载均衡 安全
Java并发基础:ArrayBlockingQueue全面解析!
ArrayBlockingQueue类是一个高效、线程安全的队列实现,它基于数组,提供了快速的元素访问,并支持多线程间的同步操作,作为有界队列,它能有效防止内存溢出,并通过阻塞机制平衡生产者和消费者的速度差异,它还提供了公平性和非公平性策略,满足不同场景下的需求。
238 1
Java并发基础:ArrayBlockingQueue全面解析!
|
5月前
|
数据采集 算法 数据挖掘
别再野蛮操作了!用Python优雅地搞定数据清洗
别再野蛮操作了!用Python优雅地搞定数据清洗
200 33
|
5月前
|
存储 消息中间件 Kafka
中原银行实时场景企业级解决方案
中原银行实时数据开发平台负责人杜威科在Flink Forward Asia 2024分享了银行业实时数据处理的经验。内容涵盖需求分析、解决方案、场景案例与现状展望。银行业需构建全链路、全场景的企业级实时数据平台,解决动账场景下的复杂计算需求。通过Flink+Paimon方案,实现高效更新、低成本存储与便捷查询。案例包括账户表实时更新入湖、交易协同优化、实时图应用、海量数据存储及业务人员易用性建设。未来目标是实现上千张表实时入湖,缩短延迟并探索AI结合的新场景。
193 2
中原银行实时场景企业级解决方案
|
6月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于模糊神经网络的金融序列预测算法matlab仿真
本程序为基于模糊神经网络的金融序列预测算法MATLAB仿真,适用于非线性、不确定性金融数据预测。通过MAD、RSI、KD等指标实现序列预测与收益分析,运行环境为MATLAB2022A,完整程序无水印。算法结合模糊逻辑与神经网络技术,包含输入层、模糊化层、规则层等结构,可有效处理金融市场中的复杂关系,助力投资者制定交易策略。
|
Dubbo Java 应用服务中间件
IntelliJ IDEA & Apache Dubbo,IDEA 官方插件正式发布!
IntelliJ IDEA & Apache Dubbo,IDEA 官方插件正式发布!
1420 91
|
机器学习/深度学习 数据采集 算法
基于CNN卷积神经网络的调制信号识别算法matlab仿真
基于CNN卷积神经网络的调制信号识别算法matlab仿真
|
10月前
|
监控 数据挖掘 物联网
固定资产精细化管理系统-资产全生命周期数字化管理
华汇数据固定资产精细化管理系统是现代企对资产从购置、使用、维护到报废的全生命周期管理。对于资产规模庞大、设备种类繁多的中大型企业而言,其重要性尤为凸显。
154 1
c++中的using namespace std;
c++中的using namespace std;
348 1
|
分布式计算 DataWorks 数据管理
DataWorks操作报错合集之写入ODPS目的表时遇到脏数据报错,该怎么解决
DataWorks是阿里云提供的一站式大数据开发与治理平台,支持数据集成、数据开发、数据服务、数据质量管理、数据安全管理等全流程数据处理。在使用DataWorks过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
366 0
|
监控 安全 搜索推荐
用员工上网行为监控实现员工网络管理,这些软件超给力
【摘要】面对员工工作时间的不专注,网络管理软件成为解决方案。WorkWin提供远程监控,实时保障工作安全与效率;RescueTime关注员工生产力,自动跟踪时间使用;InterGuard则在监控中保护员工隐私,确保数据安全。这些工具助力企业提升效率,优化管理,同时确保合规运营。
253 0