C# 对文件与文件夹的操作包括删除、移动与复制


在C#中,对文件与文件夹的操作包括删除、移动与复制是非常常见的需求。以下是如何使用C#的`System.IO`命名空间来实现这些操作的简洁示例:

### 删除文件

使用`File.Delete`方法删除文件。如果文件不存在,该方法将引发`FileNotFoundException`异常,但你可以通过捕获异常来处理这种情况。


try
{
    File.Delete(@"C:\path\to\your\file.txt");
    Console.WriteLine("文件已删除");
}
catch (FileNotFoundException)
{
    Console.WriteLine("文件不存在");
}

### 删除文件夹

删除文件夹可以使用`Directory.Delete`方法。注意,如果文件夹非空,你可能需要使用重载版本`Directory.Delete(string path, bool recursive)`并传递`true`作为第二个参数来递归删除所有子文件夹和文件。


try
{
    Directory.Delete(@"C:\path\to\your\folder", true);
    Console.WriteLine("文件夹及其内容已删除");
}
catch (DirectoryNotFoundException)
{
    Console.WriteLine("文件夹不存在");
}
catch (IOException)
{
    Console.WriteLine("文件夹可能正在使用中,无法删除");
}

### 移动文件

移动文件可以使用`File.Move`方法。如果目标路径已存在同名文件,它将被覆盖。


File.Move(@"C:\path\to\your\oldfile.txt", @"C:\path\to\your\newfile.txt");
Console.WriteLine("文件已移动");

### 复制文件

复制文件可以使用`File.Copy`方法。如果目标文件已存在,它将被覆盖,除非你使用重载版本并指定不覆盖。


File.Copy(@"C:\path\to\your\sourcefile.txt", @"C:\path\to\your\destinationfile.txt");
Console.WriteLine("文件已复制");

// 或者,如果不希望覆盖目标文件(C# 12 及以上版本,需要.NET 6 或更高版本)
// File.Copy(@"C:\path\to\your\sourcefile.txt", @"C:\path\to\your\destinationfile.txt", overwrite: false);
// 注意:上述overwrite参数在.NET 6之前的版本中不可用,需要使用File.Exists来手动检查

### 复制文件夹

复制文件夹稍微复杂一些,因为`System.IO`命名空间没有直接提供复制整个文件夹的方法。你需要编写递归函数来遍历源文件夹,并逐个复制文件/文件夹。


// 注意:这里不展示完整的递归复制文件夹代码,因为它相对较长且超出了简洁回答的范围。
// 但基本思路是:检查目标文件夹是否存在,如果不存在则创建它;然后遍历源文件夹中的所有文件和子文件夹,
// 使用File.Copy复制文件,对子文件夹则递归调用你的复制函数。

以上就是C#中对文件与文件夹进行删除、移动与复制的基本操作。请注意,在进行这些操作时,确保你有足够的权限来访问指定的文件或文件夹路径。