在 C# 中,处理目录和文件主要依赖 System.IO 命名空间下的类,这些类提供了跨平台的文件系统操作能力。以下是核心功能的总结及示例:

一、核心类与功能分类

类别 核心类/方法 主要功能
目录操作 DirectoryDirectoryInfo 创建、删除、移动目录,获取目录列表等
文件操作 FileFileInfo 创建、删除、复制、移动文件,读写文件内容
路径处理 Path 静态类 路径拼接、获取文件名/扩展名、父目录等

二、常用操作示例

1. 路径处理(Path 类)

用于路径字符串的解析和拼接(跨平台自动适配分隔符):

using System.IO;

// 拼接路径(避免手动写 "\" 或 "/")
string dirPath = Path.Combine(Application.persistentDataPath, "saveData");
string filePath = Path.Combine(dirPath, "userInfo.txt");

// 获取文件名(含扩展名)
string fileName = Path.GetFileName(filePath); // 结果:userInfo.txt

// 获取文件扩展名
string ext = Path.GetExtension(filePath); // 结果:.txt

// 获取父目录路径
string parentDir = Path.GetDirectoryName(dirPath); // 结果:Application.persistentDataPath

2. 目录操作

(1)Directory 静态类(适合简单操作)
// 检查目录是否存在
if (Directory.Exists(dirPath))
{
    // 删除目录(递归删除子目录和文件)
    Directory.Delete(dirPath, recursive: true);
}

// 创建目录(自动创建不存在的父目录)
Directory.CreateDirectory(dirPath);

// 获取目录下的所有子目录
string[] subDirs = Directory.GetDirectories(dirPath);

// 获取目录下的所有文件(可加筛选条件)
string[] files = Directory.GetFiles(dirPath, "*.txt"); // 只获取txt文件
(2)DirectoryInfo 类(适合多次操作同一目录)
// 初始化目录对象
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);

// 创建目录
if (!dirInfo.Exists)
{
    dirInfo.Create();
}

// 获取最后修改时间
DateTime lastWriteTime = dirInfo.LastWriteTime;

// 移动目录(剪切到新位置)
dirInfo.MoveTo(Path.Combine(Application.persistentDataPath, "oldData"));

3. 文件操作

(1)File 静态类(适合简单读写)
// 写入文本文件(覆盖模式)
string content = "用户名:test\n分数:100";
File.WriteAllText(filePath, content, System.Text.Encoding.UTF8);

// 追加文本到文件
File.AppendAllText(filePath, "\n等级:A");

// 读取文件内容
string readContent = File.ReadAllText(filePath);

// 复制文件(第三个参数:是否覆盖已存在文件)
string copyPath = Path.Combine(dirPath, "userInfo_backup.txt");
File.Copy(filePath, copyPath, overwrite: true);

// 删除文件
if (File.Exists(copyPath))
{
    File.Delete(copyPath);
}
(2)FileInfo 类(适合大文件或多次操作)
// 初始化文件对象
FileInfo fileInfo = new FileInfo(filePath);

// 检查文件是否存在
if (fileInfo.Exists)
{
    // 获取文件大小(字节)
    long fileSize = fileInfo.Length;

    // 移动文件(剪切到新位置)
    fileInfo.MoveTo(Path.Combine(dirPath, "userInfo_new.txt"));
}

// 流式写入(适合大文件,避免一次性加载到内存)
using (FileStream fs = fileInfo.OpenWrite())
{
    byte[] data = System.Text.Encoding.UTF8.GetBytes("大文件内容...");
    fs.Write(data, 0, data.Length);
}

三、关键注意事项

  1. 异常处理:文件操作可能抛出异常(如权限不足、文件被占用),建议用 try-catch 包裹:

    try
    {
        File.WriteAllText(filePath, "内容");
    }
    catch (IOException ex)
    {
        Debug.LogError("文件写入失败:" + ex.Message);
    }
    
  2. using 语句:操作 FileStream 等非托管资源时,用 using 自动释放资源,避免内存泄漏。

  3. 跨平台兼容

    • 路径分隔符用 Path.DirectorySeparatorChar(自动适配 Windows 的 \ 和 Linux/macOS 的 /)。
    • 避免硬编码绝对路径(如 C:\),优先使用相对路径或系统特殊目录(如 Application.persistentDataPath)。

通过上述类和方法,可实现对目录和文件的完整管理,从简单的创建删除到复杂的流式读写均能覆盖。