1. C# 文件操作概述C# 提供了丰富的文件操作 API主要通过System.IO命名空间实现。无论是读取、写入、复制、移动还是删除文件C# 都提供了简洁而强大的方法。2. 常用文件操作类2.1 File 类File类提供静态方法用于创建、复制、删除、移动和打开文件。using System.IO; // 检查文件是否存在 if (File.Exists(test.txt)) { // 读取文件内容 string content File.ReadAllText(test.txt); Console.WriteLine(content); // 写入文件 File.WriteAllText(output.txt, Hello, C# File!); }2.2 FileInfo 类FileInfo类提供实例方法适合对同一文件进行多次操作。FileInfo fileInfo new FileInfo(data.txt); if (fileInfo.Exists) { Console.WriteLine($文件名: {fileInfo.Name}); Console.WriteLine($文件大小: {fileInfo.Length} 字节); Console.WriteLine($创建时间: {fileInfo.CreationTime}); // 复制文件 fileInfo.CopyTo(data_backup.txt, true); }2.3 Directory 和 DirectoryInfo 类用于目录操作包括创建、删除、遍历目录等。// 创建目录 Directory.CreateDirectory(MyFolder); // 获取目录下所有文件 string[] files Directory.GetFiles(MyFolder, *.txt); foreach (string file in files) { Console.WriteLine(file); }3. 文件读写操作3.1 文本文件读写// 写入文本文件 File.WriteAllText(example.txt, 第一行\n第二行\n第三行); // 追加内容 File.AppendAllText(example.txt, \n追加的内容); // 读取所有行 string[] lines File.ReadAllLines(example.txt); foreach (string line in lines) { Console.WriteLine(line); }3.2 二进制文件读写using (FileStream fs new FileStream(data.bin, FileMode.Create)) { byte[] data { 0x01, 0x02, 0x03, 0x04 }; fs.Write(data, 0, data.Length); } // 读取二进制文件 using (FileStream fs new FileStream(data.bin, FileMode.Open)) { byte[] buffer new byte[4]; fs.Read(buffer, 0, buffer.Length); Console.WriteLine(BitConverter.ToString(buffer)); }3.3 使用 StreamReader 和 StreamWriter// 写入文件 using (StreamWriter writer new StreamWriter(stream.txt)) { writer.WriteLine(使用 StreamWriter 写入); writer.WriteLine(第二行内容); } // 读取文件 using (StreamReader reader new StreamReader(stream.txt)) { string line; while ((line reader.ReadLine()) ! null) { Console.WriteLine(line); } }4. 文件操作实践技巧4.1 异常处理try { string content File.ReadAllText(important.txt); Console.WriteLine(content); } catch (FileNotFoundException ex) { Console.WriteLine($文件未找到: {ex.Message}); } catch (IOException ex) { Console.WriteLine($IO错误: {ex.Message}); } catch (UnauthorizedAccessException ex) { Console.WriteLine($权限不足: {ex.Message}); }4.2 文件监控FileSystemWatcher watcher new FileSystemWatcher(); watcher.Path C:\MyFolder; watcher.Filter *.txt; watcher.NotifyFilter NotifyFilters.LastWrite | NotifyFilters.FileName; watcher.Changed (sender, e) Console.WriteLine($文件 {e.Name} 已修改); watcher.Created (sender, e) Console.WriteLine($文件 {e.Name} 已创建); watcher.Deleted (sender, e) Console.WriteLine($文件 {e.Name} 已删除); watcher.EnableRaisingEvents true;4.3 临时文件处理// 创建临时文件 string tempFile Path.GetTempFileName(); Console.WriteLine($临时文件: {tempFile}); // 使用后删除 File.Delete(tempFile); // 获取临时目录 string tempPath Path.GetTempPath(); Console.WriteLine($临时目录: {tempPath});5. 路径操作string fullPath C:\Users\Admin\Documents\report.docx; // 获取文件名 string fileName Path.GetFileName(fullPath); // report.docx // 获取目录名 string directory Path.GetDirectoryName(fullPath); // C:\Users\Admin\Documents // 获取扩展名 string extension Path.GetExtension(fullPath); // .docx // 组合路径 string newPath Path.Combine(directory, backup, fileName);6. 异步文件操作// 异步读取 async Task ReadFileAsync(string path) { using (StreamReader reader new StreamReader(path)) { return await reader.ReadToEndAsync(); } } // 异步写入 async Task WriteFileAsync(string path, string content) { using (StreamWriter writer new StreamWriter(path)) { await writer.WriteAsync(content); } } // 使用示例 await WriteFileAsync(async.txt, 异步写入的内容); string result await ReadFileAsync(async.txt);7. 总结C# 的文件操作 API 设计合理且功能全面从简单的文本读写到复杂的异步操作都能轻松应对。在实际开发中建议始终使用using语句确保资源正确释放对文件操作进行适当的异常处理考虑使用异步方法提升应用响应性注意文件路径的跨平台兼容性