在C#中处理文件系统:.NET实用示例

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

在C#中处理文件系统:从理论到实践



文件系统操作是每位开发人员都会遇到的基本任务之一。无论是日志记录、配置文件处理、数据导入还是报告生成——在C#(.NET)中熟练地读取、写入和管理文件在任何项目中都是必需的。在本文中,我们将从简单操作到目录处理,详细讲解C#中文件系统操作的实用示例。



我们将使用System.IO命名空间,它提供了与文件系统交互所需的所有类。



1. 文件和文件夹操作的核心类



在编写代码之前,了解关键类非常重要:



  • File — 用于创建、复制、删除和移动文件的静态类。
  • FileInfo — 提供特定文件信息及其操作方法的实例类。
  • Directory — 用于操作文件夹的静态类。
  • DirectoryInfo — 用于获取文件夹信息的实例类。
  • Path — 用于处理文件路径的实用类。


我们来看一个最简单的示例——检查文件是否存在并创建它:



using System;using System.IO;

class Program{ static void Main() { string filePath = @"C:\\Test\\example.txt";

if (File.Exists(filePath)) { Console.WriteLine("文件存在。"); } else { File.Create(filePath).Close(); Console.WriteLine("文件已创建。"); } }}


请注意:在File.Create()之后,我们调用了Close()以释放流。在现代项目中,最好使用using语句。



2. 文本文件的读取与写入



最常见的场景是读取和写入文本信息。在C#中,有方便的StreamReader和StreamWriter类。



2.1 向文件写入数据



使用StreamWriter向文件写入字符串的示例:



string path = @"C:\\Test\\log.txt";string[] lines = { "第一行", "第二行", "第三行" };

using (StreamWriter writer = new StreamWriter(path, false)){ foreach (string line in lines) { writer.WriteLine(line); }}Console.WriteLine("数据已写入。");


StreamWriter构造函数的第二个参数false表示覆盖文件。如果指定true,数据将追加到文件末尾。



2.2 从文件读取数据



读取全部内容或逐行读取:



string path = @"C:\\Test\\log.txt";

// 一次性读取全部文本string allText = File.ReadAllText(path);Console.WriteLine("全部文本:" + allText);

// 逐行读取string[] allLines = File.ReadAllLines(path);Console.WriteLine("逐行读取:");foreach (string line in allLines){ Console.WriteLine(line);}


对于大文件,最好使用StreamReader在循环中逐行读取,以避免将整个文件加载到内存中。



using (StreamReader reader = new StreamReader(path)){    string currentLine;    while ((currentLine = reader.ReadLine()) != null)    {        Console.WriteLine(currentLine);    }}


3. 二进制文件操作(FileStream)



当需要处理二进制数据(如图像、压缩文件、序列化对象)时,使用FileStream类。它允许以字节形式读取和写入数据。



写入和读取字节数组的示例:



博客

书籍推荐