C# 目录
最后修改于 2025 年 4 月 20 日
本教程介绍如何在 C# 中使用 Directory 类来执行目录操作。 Directory 类提供了用于创建、移动以及枚举目录和子目录的静态方法。
Directory 类公开了用于目录操作的静态方法。它与提供实例方法的 DirectoryInfo 类一起使用。
Directory 类可用于创建、删除、移动目录以及枚举其内容。 它处理路径操作和目录权限。
检查目录是否存在
此示例演示如何使用 Directory.Exists 方法检查目录是否存在。 这通常是目录操作的第一步。
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp\TestDirectory";
if (Directory.Exists(path))
{
Console.WriteLine("Directory exists.");
}
else
{
Console.WriteLine("Directory does not exist.");
}
}
}
如果指定的路径引用现有目录,则 Directory.Exists 方法返回 true。 路径可以是相对路径或绝对路径。 在此示例中,我们检查 "C:\Temp\TestDirectory" 是否存在目录。
该方法执行简单的布尔检查,不会因无效路径而引发异常。 这使得在尝试其他目录操作之前使用它是安全的。 在执行可能失败的操作之前,始终验证目录是否存在。
创建目录
此示例演示如何使用 Directory.CreateDirectory 创建新目录。 该方法创建指定路径中的所有目录和子目录。
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp\NewDirectory";
try
{
Directory.CreateDirectory(path);
Console.WriteLine("Directory created successfully.");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
CreateDirectory 创建指定路径中所有尚不存在的目录。 如果目录存在,则该方法不执行任何操作。 该示例包括对创建可能失败的情况的基本错误处理。
该方法返回一个表示已创建目录的 DirectoryInfo 对象。 我们在此处不使用返回值,但它可以用于进一步的操作。 该路径可以包含多个尚不存在的级别。
获取目录文件
此示例演示如何使用 Directory.GetFiles 获取目录中的所有文件。 该方法返回完整路径的数组。
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp";
try
{
string[] files = Directory.GetFiles(path);
Console.WriteLine("Files in directory:");
foreach (string file in files)
{
Console.WriteLine(file);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
GetFiles 返回指定目录中所有文件的名称。 默认情况下,它不搜索子目录。 该方法具有用于搜索模式和搜索选项的重载。
返回的路径包括完整的目录路径。 该示例显示了目录可能无法访问的情况下的基本错误处理。 这对于目录列表操作很有用。
获取子目录
此示例演示如何使用 Directory.GetDirectories 获取目录的所有子目录。 该方法返回路径数组。
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp";
try
{
string[] dirs = Directory.GetDirectories(path);
Console.WriteLine("Subdirectories:");
foreach (string dir in dirs)
{
Console.WriteLine(dir);
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
GetDirectories 返回指定目录中所有子目录的名称。 与 GetFiles 一样,它具有用于搜索模式和选项的重载。 默认情况下,该方法不会递归到子目录中。
返回的路径是完全限定的。 本示例演示了基本的目录遍历。 错误处理确保程序在目录不可访问时不会崩溃。
移动目录
此示例演示如何使用 Directory.Move 移动目录。 该方法移动目录及其内容。
using System;
using System.IO;
class Program
{
static void Main()
{
string sourceDir = @"C:\Temp\OldDir";
string destDir = @"C:\Temp\NewDir";
try
{
Directory.Move(sourceDir, destDir);
Console.WriteLine("Directory moved successfully.");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
Move 将目录传输到新位置。 目标必须不存在。 该操作在同一驱动器上是原子的。 跨驱动器,它是一个复制和删除操作。
该方法移动所有内容,包括子目录。 该示例显示了移动可能失败的情况下的基本错误处理。 这对于目录重组很有用。
删除目录
此示例演示如何使用 Directory.Delete 删除目录。 该方法可以递归删除。
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp\DirectoryToDelete";
try
{
Directory.Delete(path, recursive: true);
Console.WriteLine("Directory deleted successfully.");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
Delete 删除指定的目录。 recursive 参数确定是否删除子目录和文件。 如果没有它,目录必须为空。
该示例显示了启用了递归选项的删除。 错误处理捕获删除可能失败的情况。 这对于清理操作很有用。
获取目录信息
此示例演示如何使用 Directory 类方法获取目录创建、访问和写入时间。
using System;
using System.IO;
class Program
{
static void Main()
{
string path = @"C:\Temp";
try
{
Console.WriteLine($"Creation time: {Directory.GetCreationTime(path)}");
Console.WriteLine($"Last access time: {Directory.GetLastAccessTime(path)}");
Console.WriteLine($"Last write time: {Directory.GetLastWriteTime(path)}");
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
Directory 类提供了获取各种时间戳的方法。 这些包括创建时间、上次访问时间和上次写入时间。 这些时间以 DateTime 值返回。
该示例显示了基本的目录元数据检索。 错误处理确保程序在目录不可访问时不会崩溃。 这对于目录监视和日志记录很有用。
来源
本教程介绍了 C# 中使用 Directory 类进行目录操作,包括目录的创建、删除、移动和枚举。
作者
列出所有 C# 教程。