C#读取文件夹
时间: 2025-05-14 13:00:24 浏览: 26
### 使用 Directory 类读取文件夹
在 C# 中,`System.IO.Directory` 提供了一种静态方法的方式来操作文件系统。以下是关于如何使用 `Directory` 类来读取文件夹及其内容的详细介绍。
#### 静态方法概述
`Directory` 是一个静态类,提供了许多用于管理目录的方法。例如,可以通过调用这些方法来创建、移动、删除以及枚举目录的内容[^1]。
#### 获取指定路径下的所有文件
如果需要获取某个特定路径下的所有文件列表,可以使用 `Directory.GetFiles()` 方法:
```csharp
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"X:\XXX\XX";
try
{
// 获取指定路径下的所有文件
string[] files = Directory.GetFiles(path);
foreach (string file in files)
{
Console.WriteLine(file);
}
}
catch (Exception ex)
{
Console.WriteLine($"发生错误: {ex.Message}");
}
}
}
```
上述代码会打印出给定路径下所有的文件名称[^2]。
#### 列出子目录
为了列出目标文件夹内的所有子目录,可利用 `Directory.GetDirectories()` 方法完成此功能:
```csharp
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"X:\XXX\XX";
try
{
// 获取指定路径下的所有子目录
string[] directories = Directory.GetDirectories(path);
foreach (string directory in directories)
{
Console.WriteLine(directory);
}
}
catch (Exception ex)
{
Console.WriteLine($"发生错误: {ex.Message}");
}
}
}
```
这段代码能够展示根目录下的每一个子目录的名字[^3]。
#### 结合递归方式列举全部文件和文件夹
当希望不仅限于当前层级而是深入到每一层去检索时,则需采用递归的方式处理数据结构:
```csharp
using System;
using System.Collections.Generic;
using System.IO;
static class RecursiveFileSearcher
{
public static IEnumerable<string> EnumerateAllFiles(string rootDir)
{
Queue<string> dirs = new Queue<string>();
dirs.Enqueue(rootDir);
while (dirs.Count > 0)
{
var currentDir = dirs.Dequeue();
try
{
foreach (var subdir in Directory.GetDirectories(currentDir))
dirs.Enqueue(subdir);
foreach (var file in Directory.GetFiles(currentDir))
yield return file;
}
catch (UnauthorizedAccessException e)
{
Console.Error.WriteLine(e.Message);
}
}
}
public static void Main()
{
const string searchRoot = @"X:\XXX\XX";
foreach (var file in EnumerateAllFiles(searchRoot))
{
Console.WriteLine(file);
}
}
}
```
通过以上示例可以看出,在实际应用过程中可以根据需求灵活调整搜索范围与条件[^4]。
阅读全文
相关推荐

















