C# 文件与文件夹操作:常用函数介绍 在日常的软件开发中无论是日志记录、配置文件读取还是数据存储文件与文件夹的操作都是不可或缺的基础技能。C# 通过其强大的System.IO命名空间为我们提供了一套丰富且易用的 API 来处理这些任务。本文将全面梳理 C# 中常用的文件读取、文件操作和文件夹操作方法重点剖析核心函数的作用及参数含义助您彻底掌握文件 I/O 操作。 一、 核心基础概念在开始具体的方法之前我们需要先理解几个核心概念特别是文件流Stream的工作机制。1. 流Stream与缓冲区在计算机中数据的传输往往不是一步到位的。流Stream​ 是一个抽象的概念代表了字节序列的源或目标。C# 中常用的流包括FileStream文件流、MemoryStream内存流等。为了提高读写效率减少直接与物理磁盘交互的次数C# 引入了缓冲区Buffer的概念。BufferedStream就是一个典型的缓冲流它会先将数据暂存到内存缓冲区中当缓冲区满或手动刷新时再将数据一次性写入底层流如FileStream并最终保存到物理存储中。2. 项目文件属性复制到输出目录在 Visual Studio 中开发时我们经常需要将一些外部文件如配置文件、文本数据包含在项目中。操作路径右键点击项目中的文件如hello.txt - 选择“属性”。关键设置“复制到输出目录”。不复制仅在开发目录保留编译生成的程序无法直接访问。始终复制每次编译都会将该文件复制到程序的运行目录如bin/Debug确保程序总能找到它。如果较新则复制仅在源文件比目标文件新时才复制适用于需要更新的配置文件。 二、 文件读取File Reading读取文件通常分为两大类文本文件读取和底层字节流读取。1. 便捷文本读取System.IO.File 类对于小型文本文件File类提供了非常便捷的静态方法方法名作用参数解释File.ReadAllText(path)一次性读取文件的所有文本内容返回字符串。path: 文件的路径相对或绝对File.ReadAllLines(path)一次性读取文件的所有行返回一个字符串数组。path: 同上File.ReadLines(path)按行读取文件返回一个IEnumerablestring。推荐使用因为它支持延迟加载适合大文件。path: 同上File.Exists(path)前置检查。判断指定路径的文件是否存在返回布尔值。path: 同上2. 底层流与高级读取器当需要处理大文件或进行复杂的读写控制时需要使用FileStream和StreamReader。A. FileStream文件流这是最底层的文件操作类直接操作字节数组。csharp// 构造函数核心参数解释public FileStream(string path, FileMode mode, FileAccess access, FileShare share);path: 要打开或创建的文件路径。mode(FileMode枚举): 指定操作系统打开文件的方式。Open: 打开现有文件。若不存在则报错。Create: 创建新文件。若存在则覆盖。OpenOrCreate: 若存在则打开不存在则创建。Append: 打开并定位到文件末尾用于追加写入。access(FileAccess枚举): 定义文件的访问权限。Read: 只读。Write: 只写。ReadWrite: 读写。share(FileShare枚举): 控制其他流对同一文件的访问权限。例如Read表示允许其他进程同时读取此文件。B. StreamReader流读取器StreamReader专门用于将字节流解码为字符流极大地方便了文本读取。csharp// 常用构造函数public StreamReader(string path); // 直接传入文件路径public StreamReader(Stream stream, Encoding encoding); // 传入已有的流和字符编码stream: 底层的流对象如FileStream。encoding: 字符编码如Encoding.UTF8防止中文乱码。常用读取方法ReadLine(): 读取下一行文本。ReadToEnd(): 从当前位置读取到流末尾的所有文本。三、 文件操作File Operations除了读写System.IO.File类还提供了丰富的静态方法来管理文件生命周期。方法名作用参数/特性File.WriteAllText(path, contents)创建或覆盖文件并写入指定文本。contents: 要写入的字符串。path:路径File.AppendAllText(path, contents)打开文件追加指定文本然后关闭。常用于日志记录。contents: 同上。path同上File.Copy(source, dest)将现有文件复制到新文件。overwrite: 布尔值指示是否覆盖同名目标文件。source:源文件dest目标文件File.Move(source, dest)将指定文件移动到新位置可以用于重命名。若目标存在取决于操作系统。source:同上dest同上File.Delete(path)永久删除指定文件。若文件不存在不会抛出异常。path路径File.Create(path)创建或覆盖指定文件并返回一个 FileStream供后续操作。适用于需要立即获取文件句柄的场景。path同上 四、 文件夹目录操作对于文件夹的管理主要依赖Directory类和Path类。1. Directory 类目录管理用于创建、删除、移动和枚举目录。方法名作用参数解释Directory.Exists(path)检查指定路径的目录是否存在。path: 目录路径。Directory.CreateDirectory(path)按路径创建所有目录和子目录。非常健壮即使中间层级不存在也会一并创建。path: 要创建的目录路径。Directory.Delete(path)删除目录。recursive: 若为 true则删除子目录和文件否则仅删除空目录。path: 目录路径。Directory.GetFiles(path)返回指定目录中所有文件的完整路径字符串数组。searchPattern: 搜索模式如 *.txt。searchOption: 是否搜索子目录。path: 目录路径。Directory.GetDirectories(path)返回指定目录中所有子目录的完整路径字符串数组。同上。Directory.Move(source, dest)将目录及其内容移动到新位置。类似于文件移动。2. Path 类路径处理注意​Path类不访问实际文件它只处理字符串路径提供了一系列安全的工具方法。方法名作用示例Path.Combine(path1, path2)强烈推荐。安全地连接多个路径字符串自动处理路径分隔符\。Path.Combine(C:\folder, file.txt)→ C:\folder\file.txtPath.GetFileName(path)从完整路径中提取文件名和扩展名。D:\test\a.txt→ a.txtPath.GetDirectoryName(path)从完整路径中提取目录信息。D:\test\a.txt→D:\testPath.GetExtension(path)获取文件的扩展名包含点。D:\test\a.txt→.txtPath.GetTempPath()获取当前系统的临时文件夹路径。C:\Users...\AppData\Local\Temp 总结与实践建议善用using语句在操作FileStream、StreamReader等实现了IDisposable接口的对象时务必使用using语句以确保底层资源文件句柄能被及时释放避免内存泄漏。using语句结束时会自动释放资源。大文件策略处理大文件时避免使用ReadAllText或ReadAllBytes因为它们会将整个文件加载到内存中浪费内存资源。应改用FileStream配合StreamReader的ReadLine或Read方法逐块处理。路径处理永远不要使用字符串拼接dir \\ file来构造路径请始终使用Path.Combine以防止跨平台兼容性问题或多余的斜杠错误。掌握了以上这些核心 API您就能应对绝大多数日常的文件与文件夹操作需求了。希望这篇总结对您有所帮助