C#编程-29:循环访问目录树
【摘要】
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace FileClass
{
class Progra...
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
文章来源: pengshiyu.blog.csdn.net,作者:彭世瑜,版权归原作者所有,如需转载,请联系作者。
原文链接:pengshiyu.blog.csdn.net/article/details/81048982
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)