C# 使用foreach嵌套进行一个简单的遍历循环目录操作

工具

VS2015


第一步创建一个C#的控制台应用程序(此处略过!)


整体思路

首先使用的是foreach进行一个遍历、若是C语言的话那么可以直接使用win32这种windows的API进行调用操作!这里不做详细介绍、只做一个简单的foreach进行一个磁盘目录遍历。检测目录、当检测到目录为不可访问的时候使用try..catch进行一个略过!


第一层循环实现过程

代码如下:


using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;


namespace @foreach
{
    class Program
    {
        static void Main(string[] args)
        {
            string file = @"C:\";
            DirectoryInfo TheFolder = new DirectoryInfo(file);
            DirectoryInfo[] Folder1 = TheFolder.GetDirectories();
            try
            {
                foreach (DirectoryInfo NextFile in x1)
                {
                    Console.WriteLine(NextFile.Name);

                }
            }
            catch (Exception a)
            {
                Console.WriteLine(a.Message);
            }
        }
    }
}

代码详解

 string file = @"C:\"; 

//用于指定一个遍历的路径

 DirectoryInfo TheFolder = new DirectoryInfo(file);
 DirectoryInfo[] Folder1 = TheFolder.GetDirectories();

创建一个NEW DirectoryInfo的对象
DirectoryInfo:它用于创建,删除和移动目录。它提供了执行与目录和子目录相关的操作的方法
DirectoryInfo[] x1:创建一个存放得到目录的一个数组

增加try..catch便于代码报错维护、遇到了有权限的目录无法访问代码是会报错的!那么想让代码继续执行下去就使用try..catch进行一个略过、catch里面得到一个报错信息、并不影响代码继续执行!

最后进行一个foreach循环操作、把内容进行循环、并且输出目录名。

c#循环遍历.png


得到目录后在进行子目录-文件循环

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;


namespace @foreach
{
    class Program
    {
        static void Main(string[] args)
        {
            string file = @"C:\";
            DirectoryInfo TheFolder = new DirectoryInfo(file);
            DirectoryInfo[] Folder1 = TheFolder.GetDirectories();
            try
            {
                foreach (DirectoryInfo NextFile in Folder1)
                {
                    Console.WriteLine(NextFile.Name);
                    try
                    {
                        DirectoryInfo[] fileName = NextFile.GetDirectories();
                        FileInfo[] File = NextFile.GetFiles();
                        foreach (DirectoryInfo next in fileName)
                        {
                            Console.WriteLine(next.Name);
                        }
                        foreach (FileInfo nextFile in File)
                        {
                            Console.WriteLine(nextFile.Name);
                        }
                    }
                    catch (Exception a)
                    {
                        Console.WriteLine(a.Message);
                    }
                }
            }
            catch (Exception a)
            {
                Console.WriteLine(a.Message);
            }
        }
    }
}

代码详解

首先第一次得到的目录为:NextFile的目录集合!那么就用这个集合进行第二次foreach循环得到第二层目录

 DirectoryInfo[] fileName = NextFile.GetDirectories();//得到第一次的目录集合
 FileInfo[] File = NextFile.GetFiles();//获取文件的一个集合
 foreach (DirectoryInfo next in fileName)//foreach循环得到第二层目录
 {
   Console.WriteLine(next.Name);
 }
 foreach (FileInfo nextFile in File)//foreach循环得到第二层目录里面的文件内容
 {
 Console.WriteLine(nextFile.Name);
 }

c#循环遍历2.png

这样就可以得到一个简单的遍历循环结果!是不是很简单!其实这就是一种笨办法。也可以写一个函数进行调用,当目录存在子目录的时候就调用这个函数进行遍历得到结果,判断到子目录里面没有内容调出循环接着第二个目录循环这样可以!并且更加高效

若是大佬们有更好的办法请提供给我参考一下!本人小白、只做一个记录而已!望各位大佬嘴下留情、仅提供一个跟我一样的小白有个交流学习的地方!

原创文章,作者:纸飞机,如若转载,请注明出处:https://www.zfjsec.com/253.html
-- 展开阅读全文 --
PHP漏洞全解
« 上一篇 05-10
JavaScript高级程序设计高清完整版PDF在线预览
下一篇 » 05-12

发表评论