在 C# 中处理文件系统:从基础到高级技术
文件系统操作是任何应用程序开发中的关键任务之一。在 C# (.NET) 中,为此目的存在一个强大的命名空间 System.IO,它为开发人员提供了创建、读取、写入、移动和删除文件及文件夹的完整工具集。在本文中,我们将详细分析所有基本的文件系统操作,从简单的示例开始,到高级的数据处理技术结束。
C# 中文件操作的基础
System.IO 命名空间包含 File 和 FileInfo 类,它们提供了用于管理文件的静态方法和实例方法。让我们看看基本操作。
读取和写入文本文件
处理文本文件最简单的方法是使用 File 类的静态方法:
using System.IO;
// 将文本写入文件(创建新文件或覆盖现有文件)string content = "Привет, мир! Это пример работы с файлами в C#.";File.WriteAllText(@"C:\\temp\\example.txt", content);
// 从文件中读取所有文本string readContent = File.ReadAllText(@"C:\\temp\\example.txt");Console.WriteLine(readContent);
// 追加到文件末尾File.AppendAllText(@"C:\\temp\\example.txt", "Новая строка добавлена.");处理二进制文件
要处理二进制数据,请使用 File.ReadAllBytes 和 File.WriteAllBytes:
byte[] binaryData = new byte[] { 0x48, 0x65, 0x6C, 0x6C, 0x6F };File.WriteAllBytes(@"C:\\temp\\binary.bin", binaryData);
byte[] readBinary = File.ReadAllBytes(@"C:\\temp\\binary.bin");Console.WriteLine(string.Join(", ", readBinary)); // 输出: 72, 101, 108, 108, 111检查文件是否存在并删除它
在执行文件操作之前,检查文件是否存在总是很有用的:
string filePath = @"C:\\temp\\example.txt";
if (File.Exists(filePath)){ Console.WriteLine("Файл существует. Удаляем..."); File.Delete(filePath); Console.WriteLine("Файл удален.");}else{ Console.WriteLine("Файл не найден.");}在 C# 中处理目录
为了管理文件夹,使用了 Directory 和 DirectoryInfo 类。它们允许创建、移动、重命名和删除目录,以及获取有关它们的信息。
创建和删除文件夹
string dirPath = @"C:\\temp\\MyNewFolder";
// 创建文件夹(如果已存在,不会抛出异常)Directory.CreateDirectory(dirPath);
// 检查是否存在if (Directory.Exists(dirPath)){ Console.WriteLine("Папка создана успешно.");}
// 删除文件夹(第二个参数 - 是否递归删除)Directory.Delete(dirPath, recursive: true);Console.WriteLine("Папка удалена.");获取文件和子文件夹列表
GetFiles 和 GetDirectories 方法允许获取目录的内容:
string targetDir = @"C:\\temp";
// 获取目录中的所有文件string[] files = Directory.GetFiles(targetDir);Console.WriteLine("Файлы в директории:");foreach (string file in files){ Console.WriteLine($" {Path.GetFileName(file)}");}
// 获取所有子文件夹string[] subDirs = Directory.GetDirectories(targetDir);Console.WriteLine("Подпапки:");foreach (string dir in subDirs){ Console.WriteLine($" {Path.GetFileName(dir)}");}
// 按模式搜索(例如,所有文本文件)string[] txtFiles = Directory.GetFiles(targetDir, "*.txt");Console.WriteLine($"Найдено {txtFiles.Length} текстовых файлов.");使用 DirectoryInfo
DirectoryInfo 类