当前位置:首页 > C# > 正文

C#文件与目录操作详解(使用FileInfo与DirectoryInfo类轻松管理本地文件系统)

在C#开发中,经常需要对本地文件系统进行读写、创建、删除等操作。.NET Framework 提供了两个非常实用的类:FileInfoDirectoryInfo,它们分别用于操作文件和目录。本教程将带你从零开始,掌握这两个类的基本用法,即使是编程小白也能轻松上手!

C#文件与目录操作详解(使用FileInfo与DirectoryInfo类轻松管理本地文件系统) C# FileInfo  DirectoryInfo 文件操作 目录操作 第1张

一、什么是 FileInfo 和 DirectoryInfo?

FileInfo 是 .NET 中用于表示单个文件的类,提供了获取文件属性(如大小、创建时间)、重命名、复制、移动、删除等方法。

DirectoryInfo 则用于表示一个目录(文件夹),可以用来创建子目录、枚举文件和子目录、删除目录等。

这两个类都属于 System.IO 命名空间,使用前需先引入该命名空间。

二、FileInfo 实例操作示例

下面是一个使用 FileInfo 创建、检查、重命名和删除文件的完整示例:

using System;using System.IO;class Program{    static void Main()    {        // 创建一个 FileInfo 对象,指向 test.txt 文件        FileInfo fileInfo = new FileInfo(@"C:\MyFolder\test.txt");        // 如果文件不存在,则创建它        if (!fileInfo.Exists)        {            using (FileStream fs = fileInfo.Create())            {                // 创建后自动关闭            }            Console.WriteLine($"文件已创建:{fileInfo.FullName}");        }        // 输出文件信息        Console.WriteLine($"文件大小:{fileInfo.Length} 字节");        Console.WriteLine($"创建时间:{fileInfo.CreationTime}");        // 重命名文件(通过 MoveTo)        string newFilePath = @"C:\MyFolder\renamed_test.txt";        fileInfo.MoveTo(newFilePath);        Console.WriteLine("文件已重命名。");        // 删除文件        fileInfo = new FileInfo(newFilePath); // 更新引用        fileInfo.Delete();        Console.WriteLine("文件已删除。");    }}

注意:使用 MoveTo 方法不仅可以移动文件,也可以用于重命名(只要路径在同一目录下)。

三、DirectoryInfo 实例操作示例

接下来,我们看看如何使用 DirectoryInfo 操作目录:

using System;using System.IO;class Program{    static void Main()    {        // 创建 DirectoryInfo 对象        DirectoryInfo dirInfo = new DirectoryInfo(@"C:\MyNewFolder");        // 如果目录不存在,则创建        if (!dirInfo.Exists)        {            dirInfo.Create();            Console.WriteLine($"目录已创建:{dirInfo.FullName}");        }        // 创建子目录        DirectoryInfo subDir = dirInfo.CreateSubdirectory("SubFolder");        Console.WriteLine($"子目录已创建:{subDir.FullName}");        // 枚举目录中的所有文件        FileInfo[] files = dirInfo.GetFiles();        Console.WriteLine($"目录中共有 {files.Length} 个文件。");        // 枚举子目录        DirectoryInfo[] subDirs = dirInfo.GetDirectories();        foreach (var sub in subDirs)        {            Console.WriteLine($"子目录:{sub.Name}");        }        // 删除整个目录(包括子目录和文件)        dirInfo.Delete(true); // true 表示递归删除        Console.WriteLine("目录已删除。");    }}

四、常见应用场景

  • 批量重命名文件(使用 FileInfo 遍历并重命名)
  • 备份指定目录下的所有文件(结合 DirectoryInfo.GetFiles()FileInfo.CopyTo()
  • 清理过期日志文件(通过 FileInfo.CreationTime 判断)
  • 构建文件浏览器或资源管理器功能

五、注意事项

1. 使用 FileInfoDirectoryInfo 时,路径字符串建议使用 @"..." 以避免转义问题。

2. 操作前务必检查文件或目录是否存在(.Exists 属性),避免异常。

3. 删除非空目录时,必须使用 Delete(true) 启用递归删除。

4. 这些操作涉及磁盘 I/O,建议在异步环境中使用 async/await 模式提升性能(.NET Core/.NET 5+ 支持部分异步方法)。

结语

通过本教程,你应该已经掌握了 C# 中 FileInfoDirectoryInfo 的基本用法。无论是进行简单的文件管理,还是开发复杂的文件处理工具,这两个类都是你不可或缺的帮手。记住关键词:C# FileInfoC# DirectoryInfo文件操作目录操作,它们将帮助你在开发中快速定位相关技术方案。

动手试试吧!实践是掌握编程的最佳方式。