C#编程-29:循环访问目录树_彭世瑜_新浪博客
原创
©著作权归作者所有:来自51CTO博客作者彭世瑜的原创作品,请联系作者获取转载授权,否则将追究法律责任
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
上一篇:C#编程-29:循环访问目录树
下一篇:C#编程-28:读写注册表
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
51c大模型~合集29大模型
-
C#编程-138:网络编程基础_彭世瑜_新浪博客
网络编程基础_彭世瑜_新浪博客
网络 python 编程语言 算法 java -
C#编程-145:Threading线程基础_彭世瑜_新浪博客
java python 多线程 c++ 编程语言 -
C#编程-127:WPF初级入门_彭世瑜_新浪博客
实例界面:实用技巧1:利用ps拾色器可以快速获取图片颜色实用技巧2:通过Win+R,输入:charmap,即可调出字符映射表,输入各种符号 ...
python 算法 java 机器学习 linux -
C#编程-56:DatetimePicker复习笔记_彭世瑜_新浪博客
显示格式:Format属性自定义时间显示:Format属性设置为Customvalue属性是datetime结构的值
c# java python html c++