C# 文件系统操作:开发者完整指南

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

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

开始课程

在 C# 中处理文件系统:从基础到高级技术

文件系统操作是 C# 应用程序开发中的关键任务之一。无论是保存用户数据、读取配置文件还是处理日志,有效与文件和目录交互的能力是每个 .NET 开发者的必备技能。在本文中,我们将分析 System.IO 命名空间的主要类,学习如何创建、读取和修改文件,并探讨错误处理的最佳实践。

1. 文件系统操作的主要类

在 .NET 中,有几个关键类用于处理文件和目录。让我们详细了解一下它们。

File 和 FileInfo 类

File 是一个静态类,提供用于创建、复制、删除和移动文件的方法。FileInfo 是一个实例类,允许处理特定文件。

using System.IO;

// 使用静态类 File
string path = @"C:\Temp\test.txt";
if (File.Exists(path))
{
    string content = File.ReadAllText(path);
    Console.WriteLine(content);
}

// 使用 FileInfo
FileInfo fileInfo = new FileInfo(path);
if (fileInfo.Exists)
{
    Console.WriteLine($"文件大小: {fileInfo.Length} 字节");
    Console.WriteLine($"创建日期: {fileInfo.CreationTime}");
}

Directory 和 DirectoryInfo 类

类似地,Directory 是用于目录操作的静态类,而 DirectoryInfo 用于处理特定文件夹。

string dirPath = @"C:\Temp\MyFolder";

// 创建目录
Directory.CreateDirectory(dirPath);

// 获取目录信息
DirectoryInfo dirInfo = new DirectoryInfo(dirPath);
if (dirInfo.Exists)
{
    Console.WriteLine($"子目录数: {dirInfo.GetDirectories().Length}");
    Console.WriteLine($"文件数: {dirInfo.GetFiles().Length}");
}

Path 类

Path 是一个用于处理路径的实用类。它有助于组合路径、提取扩展名和文件名。

string fullPath = @"C:\Temp\myfile.txt";
string fileName = Path.GetFileName(fullPath);       // myfile.txt
string extension = Path.GetExtension(fullPath);     // .txt
string directory = Path.GetDirectoryName(fullPath); // C:\Temp
string combined = Path.Combine(@"C:\Temp", "newfile.txt"); // C:\Tempewfile.txt

2. 读取和写入文件

在 C# 中有几种读取和写入文件的方法。选择取决于数据大小和所需性能。

读取文本文件

对于小文件,使用单行方法很方便:

// 一行读取整个文件
string text = File.ReadAllText("data.txt");

// 将所有行读入数组
string[] lines = File.ReadAllLines("data.txt");

// 使用 StreamReader 读取(适用于大文件)
using (StreamReader reader = new StreamReader("largefile.txt"))
{
    string line;
    while ((line = reader.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

写入文件

// 写入字符串
File.WriteAllText("output.txt", "Hello, World!");

// 写入字符串数组
string[] lines = { "第一行", "第二行" };
File.WriteAllLines("output.txt", lines);

// 追加到文件末尾
File.AppendAllText("log.txt", $"{DateTime.Now}: 新记录");

// 使用 StreamWriter 写入
using (StreamWriter writer = new StreamWriter("data.txt", append: true))
{
    writer.WriteLine("新行");
}

处理二进制文件

对于二进制数据,使用 FileStream 和 BinaryReader/BinaryWriter:

// 写入二进制数据
using (BinaryWriter writer = new BinaryWriter(File.Open("data.bin"                

博客

书籍推荐