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循环操作、把内容进行循环、并且输出目录名。
得到目录后在进行子目录-文件循环
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);
}
这样就可以得到一个简单的遍历循环结果!是不是很简单!其实这就是一种笨办法。也可以写一个函数进行调用,当目录存在子目录的时候就调用这个函数进行遍历得到结果,判断到子目录里面没有内容调出循环接着第二个目录循环这样可以!并且更加高效
若是大佬们有更好的办法请提供给我参考一下!本人小白、只做一个记录而已!望各位大佬嘴下留情、仅提供一个跟我一样的小白有个交流学习的地方!
原创文章,作者:纸飞机,如若转载,请注明出处:https://www.zfjsec.com/253.html
-- 展开阅读全文 --