在C#的System.IO命名空间下,Directory类是一组用于操作文件夹的静态方法集合,不需要创建实例就可以直接调用方法完成文件夹的各类管理操作,覆盖了日常开发中绝大多数文件夹相关的需求。

Directory类的基础使用前提
使用Directory类之前,需要先引入对应的命名空间,否则编译器会提示找不到该类。引入方式如下:
using System.IO;
常见文件夹管理操作实现
1. 判断文件夹是否存在
在进行文件夹操作前,通常需要先判断目标文件夹是否存在,避免操作出现异常。可以使用Directory.Exists方法实现,该方法接收一个文件夹路径字符串作为参数,返回布尔值表示文件夹是否存在。
string folderPath = @"D:TestFolder";
// 判断文件夹是否存在
bool isExist = Directory.Exists(folderPath);
if (isExist)
{
Console.WriteLine("文件夹已存在");
}
else
{
Console.WriteLine("文件夹不存在");
}
2. 创建文件夹
当目标文件夹不存在时,可以使用Directory.CreateDirectory方法创建文件夹,该方法支持创建多级不存在的目录,不需要手动逐层创建父目录。
string newFolderPath = @"D:TestFolderSubFolderChildFolder";
// 创建文件夹,如果路径中的父目录不存在会自动创建
Directory.CreateDirectory(newFolderPath);
Console.WriteLine("文件夹创建成功");
3. 删除文件夹
删除文件夹可以使用Directory.Delete方法,该方法有两个重载版本,一个只接收文件夹路径,要求文件夹必须为空才能删除;另一个接收路径和一个布尔值,布尔值为true时表示递归删除文件夹及其所有内容。
string deleteFolderPath = @"D:TestFolderSubFolder";
// 递归删除文件夹及其所有子文件和子文件夹
Directory.Delete(deleteFolderPath, true);
Console.WriteLine("文件夹删除成功");
4. 移动文件夹
移动文件夹可以使用Directory.Move方法,该方法接收两个参数,第一个是源文件夹路径,第二个是目标文件夹路径,移动后原路径的文件夹将不存在。
string sourcePath = @"D:TestFolder";
string targetPath = @"D:NewTestFolder";
// 移动文件夹到新路径
Directory.Move(sourcePath, targetPath);
Console.WriteLine("文件夹移动成功");
5. 获取文件夹下的内容
Directory类提供了多个方法用于获取文件夹下的子文件夹和文件,常用的有以下几个:
Directory.GetDirectories:获取指定路径下的所有子文件夹路径Directory.GetFiles:获取指定路径下的所有文件路径Directory.GetFileSystemEntries:获取指定路径下的所有文件和子文件夹路径
以下是获取指定文件夹下所有文件的示例代码:
string targetFolder = @"D:TestFolder";
// 获取文件夹下的所有文件,支持通配符筛选,这里获取所有txt文件
string[] files = Directory.GetFiles(targetFolder, "*.txt");
foreach (string file in files)
{
Console.WriteLine("找到文件:" + file);
}
使用Directory类的注意事项
在使用Directory类进行文件夹操作时,需要注意以下几点避免程序出现异常:
- 操作文件夹时需要确保程序有足够的权限访问目标路径,否则会抛出UnauthorizedAccessException异常
- 删除文件夹时如果选择递归删除,操作不可逆,建议删除前先做好备份或者二次确认
- 路径字符串可以使用绝对路径,也可以使用相对路径,相对路径是相对于程序运行目录的路径
- 如果操作的文件夹路径包含非法字符,会抛出ArgumentException异常,需要提前校验路径合法性
Directory类的方法都是静态方法,调用时不需要实例化对象,适合快速完成单次文件夹操作,如果需要频繁操作同一个文件夹,也可以考虑使用DirectoryInfo类,该类需要创建实例,提供了更多实例化的操作属性。
C#Directory类文件夹管理IO操作修改时间:2026-07-09 00:48:28