跳到主要内容

C# 目录操作

介绍

在 C# 中,目录操作是文件处理的重要组成部分。目录(也称为文件夹)是存储文件的容器,C# 提供了多种方法来创建、删除、移动和枚举目录及其内容。掌握这些操作对于管理文件系统至关重要。

本文将逐步介绍如何使用 C# 进行目录操作,并提供代码示例和实际应用场景。

目录操作基础

C# 提供了 System.IO 命名空间来处理目录操作。以下是一些常用的类和方法:

  • Directory 类:提供静态方法用于创建、移动和枚举目录及其内容。
  • DirectoryInfo 类:提供实例方法用于操作目录。

创建目录

要创建一个新目录,可以使用 Directory.CreateDirectory 方法。以下是一个简单的示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string path = @"C:\MyNewDirectory";

// 创建目录
Directory.CreateDirectory(path);

Console.WriteLine("目录已创建。");
}
}

输出:

目录已创建。

删除目录

要删除一个目录,可以使用 Directory.Delete 方法。以下是一个示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string path = @"C:\MyNewDirectory";

// 删除目录
Directory.Delete(path);

Console.WriteLine("目录已删除。");
}
}

输出:

目录已删除。
警告

删除目录时,如果目录不为空,会抛出异常。可以使用 Directory.Delete(path, true) 来删除目录及其所有内容。

移动目录

要移动一个目录,可以使用 Directory.Move 方法。以下是一个示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string sourcePath = @"C:\MyNewDirectory";
string destinationPath = @"C:\MyMovedDirectory";

// 移动目录
Directory.Move(sourcePath, destinationPath);

Console.WriteLine("目录已移动。");
}
}

输出:

目录已移动。

枚举目录内容

要枚举目录中的文件和子目录,可以使用 Directory.GetFilesDirectory.GetDirectories 方法。以下是一个示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string path = @"C:\MyNewDirectory";

// 获取目录中的所有文件
string[] files = Directory.GetFiles(path);
Console.WriteLine("文件列表:");
foreach (string file in files)
{
Console.WriteLine(file);
}

// 获取目录中的所有子目录
string[] directories = Directory.GetDirectories(path);
Console.WriteLine("子目录列表:");
foreach (string directory in directories)
{
Console.WriteLine(directory);
}
}
}

输出:

文件列表:
C:\MyNewDirectory\file1.txt
C:\MyNewDirectory\file2.txt

子目录列表:
C:\MyNewDirectory\SubDirectory1
C:\MyNewDirectory\SubDirectory2

实际应用场景

批量处理文件

假设你有一个包含大量文件的目录,你需要将这些文件移动到另一个目录并进行处理。以下是一个示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string sourcePath = @"C:\SourceDirectory";
string destinationPath = @"C:\ProcessedDirectory";

// 创建目标目录
Directory.CreateDirectory(destinationPath);

// 获取源目录中的所有文件
string[] files = Directory.GetFiles(sourcePath);

foreach (string file in files)
{
string fileName = Path.GetFileName(file);
string destFile = Path.Combine(destinationPath, fileName);

// 移动文件
File.Move(file, destFile);

// 处理文件(例如:读取内容)
string content = File.ReadAllText(destFile);
Console.WriteLine($"处理文件: {fileName}");
}
}
}

输出:

处理文件: file1.txt
处理文件: file2.txt

清理临时目录

在某些情况下,你可能需要清理临时目录中的所有文件和子目录。以下是一个示例:

csharp
using System;
using System.IO;

class Program
{
static void Main()
{
string tempPath = @"C:\TempDirectory";

// 删除目录及其所有内容
Directory.Delete(tempPath, true);

Console.WriteLine("临时目录已清理。");
}
}

输出:

临时目录已清理。

总结

在本文中,我们学习了如何在 C# 中进行目录操作,包括创建、删除、移动和枚举目录及其内容。这些操作是文件处理的基础,掌握它们对于管理文件系统至关重要。

附加资源

练习

  1. 创建一个程序,要求用户输入一个目录路径,然后列出该目录中的所有文件和子目录。
  2. 编写一个程序,将指定目录中的所有 .txt 文件移动到另一个目录,并在移动后删除源文件。
  3. 创建一个程序,递归地删除指定目录及其所有子目录和文件。

通过完成这些练习,你将更好地理解 C# 中的目录操作。