位置: 文档库 > C#(.NET) > 文档下载预览

《C语言文件操作函数大全(超详细).doc》

1. 下载的文档为doc格式,下载后可用word或者wps进行编辑;

2. 将本文以doc文档格式下载到电脑,方便收藏和打印;

3. 下载后的文档,内容与下面显示的完全一致,下载之前请确认下面内容是否您想要的,是否完整.

点击下载文档

C语言文件操作函数大全(超详细).doc

《C语言文件操作函数大全(超详细)》标题下,本文将聚焦C#(.NET)环境中的文件操作体系,结合跨平台特性与现代开发需求,系统梳理从基础读写到高级管理的核心方法。作为.NET生态的核心语言,C#通过`System.IO`命名空间提供了比传统C语言更安全、更易用的文件操作API,覆盖文件创建、读写、监控、压缩等全生命周期管理。

一、文件流基础操作

1.1 文件流创建与释放

C#通过`FileStream`类实现底层文件访问,支持同步/异步模式。创建文件流时需指定打开模式(`FileMode`)和访问权限(`FileAccess`):

// 创建新文件并写入数据
using (FileStream fs = new FileStream("test.txt", FileMode.Create, FileAccess.Write))
{
    byte[] data = Encoding.UTF8.GetBytes("Hello, .NET File IO!");
    fs.Write(data, 0, data.Length);
}
// using语句确保流自动释放

1.2 异步文件操作

.NET 4.5+引入的异步API(如`FileStream.ReadAsync`)可避免UI线程阻塞:

public async Task WriteFileAsync()
{
    byte[] buffer = Encoding.UTF8.GetBytes("Async writing");
    using (FileStream fs = new FileStream("async.txt", FileMode.Create))
    {
        await fs.WriteAsync(buffer, 0, buffer.Length);
    }
}

二、高级读写方法

2.1 文本文件读写

`StreamReader`/`StreamWriter`提供文本级操作,自动处理编码转换:

// 写入多行文本
using (StreamWriter sw = new StreamWriter("lines.txt"))
{
    sw.WriteLine("First line");
    sw.WriteLine("Second line");
}

// 逐行读取
using (StreamReader sr = new StreamReader("lines.txt"))
{
    string line;
    while ((line = sr.ReadLine()) != null)
    {
        Console.WriteLine(line);
    }
}

2.2 二进制文件处理

`BinaryReader`/`BinaryWriter`适用于结构化数据存储:

// 写入二进制数据
using (BinaryWriter bw = new BinaryWriter(File.Open("data.bin", FileMode.Create)))
{
    bw.Write(123);       // 写入整数
    bw.Write(3.14f);     // 写入浮点数
    bw.Write("Binary");  // 写入字符串
}

// 读取二进制数据
using (BinaryReader br = new BinaryReader(File.Open("data.bin", FileMode.Open)))
{
    int i = br.ReadInt32();
    float f = br.ReadSingle();
    string s = br.ReadString();
}

三、文件系统管理

3.1 路径操作类

`Path`类提供跨平台路径处理:

string fullPath = Path.Combine("folder", "subfolder", "file.txt");
// 输出:folder\subfolder\file.txt (Windows) 或 folder/subfolder/file.txt (Linux)
string extension = Path.GetExtension(fullPath); // ".txt"
string fileName = Path.GetFileNameWithoutExtension(fullPath); // "file"

3.2 目录操作

`Directory`类实现目录创建、枚举和删除:

// 创建多级目录
Directory.CreateDirectory(Path.Combine("a", "b", "c"));

// 递归删除目录
try { Directory.Delete("temp", true); } 
catch (DirectoryNotFoundException) { /* 处理异常 */ }

3.3 文件属性管理

`FileInfo`和`DirectoryInfo`提供对象化操作:

FileInfo fi = new FileInfo("test.txt");
if (fi.Exists)
{
    Console.WriteLine($"Size: {fi.Length} bytes");
    Console.WriteLine($"Created: {fi.CreationTime}");
    fi.Attributes |= FileAttributes.Hidden; // 设置隐藏属性
}

四、文件监控与压缩

4.1 文件系统监视器

`FileSystemWatcher`类可实时监控文件变化:

var watcher = new FileSystemWatcher
{
    Path = @"C:\WatchFolder",
    NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName,
    Filter = "*.txt"
};
watcher.Changed += (s, e) => Console.WriteLine($"File changed: {e.Name}");
watcher.EnableRaisingEvents = true;

4.2 ZIP压缩解压

.NET 4.5+通过`ZipArchive`类内置ZIP支持:

// 创建ZIP文件
using (FileStream zipToOpen = new FileStream("archive.zip", FileMode.Create))
using (ZipArchive archive = new ZipArchive(zipToOpen, ZipArchiveMode.Create))
{
    archive.CreateEntryFromFile("file1.txt", "extracted/file1.txt");
}

// 解压ZIP文件
using (ZipArchive archive = ZipFile.OpenRead("archive.zip"))
{
    foreach (ZipArchiveEntry entry in archive.Entries)
    {
        entry.ExtractToFile(Path.Combine("output", entry.Name), true);
    }
}

五、跨平台文件操作

5.1 路径分隔符处理

使用`Path.DirectorySeparatorChar`实现跨平台兼容:

string crossPlatformPath = $"data{Path.DirectorySeparatorChar}config.json";

5.2 长路径支持(.NET Core 3.1+)

通过`\\?\`前缀或`Path.GetFullPath`处理超长路径:

string longPath = @"\\?\C:\Very\Long\Path\...\file.txt";

六、性能优化技巧

6.1 缓冲区优化

自定义缓冲区大小可显著提升大文件读写性能:

const int BufferSize = 81920; // 80KB缓冲区
byte[] buffer = new byte[BufferSize];
using (FileStream fs = File.OpenRead("large.dat"))
{
    int bytesRead;
    while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
    {
        // 处理数据
    }
}

6.2 内存映射文件

对于超大型文件,使用`MemoryMappedFile`减少内存占用:

using (MemoryMappedFile mmf = MemoryMappedFile.CreateFromFile("huge.dat"))
using (MemoryMappedViewAccessor accessor = mmf.CreateViewAccessor())
{
    int value = accessor.ReadInt32(0); // 从偏移量0读取整数
}

七、异常处理最佳实践

7.1 常见异常类型

  • `FileNotFoundException`:文件不存在
  • `DirectoryNotFoundException`:目录不存在
  • `IOException`:通用I/O错误
  • `UnauthorizedAccessException`:权限不足

7.2 防御性编程示例

try
{
    string content = File.ReadAllText("config.json");
    // 处理内容
}
catch (FileNotFoundException ex)
{
    Console.WriteLine($"配置文件未找到: {ex.FileName}");
}
catch (UnauthorizedAccessException)
{
    Console.WriteLine("无权限访问文件,请以管理员身份运行");
}
catch (IOException ex)
{
    Console.WriteLine($"I/O错误: {ex.Message}");
}

八、现代.NET新增特性

8.1 Span高性能操作(.NET Core 2.1+)

避免内存分配的零拷贝操作:

public void ProcessFile(string path)
{
    Span buffer = stackalloc byte[1024];
    using (FileStream fs = File.OpenRead(path))
    {
        int bytesRead = fs.Read(buffer);
        // 处理buffer中的数据
    }
}

8.2 文件加密集成

结合`System.Security.Cryptography`实现加密文件操作:

using (Aes aes = Aes.Create())
{
    string encryptedPath = "data.aes";
    // 加密写入
    using (FileStream fsCrypt = new FileStream(encryptedPath, FileMode.Create))
    using (CryptoStream cs = new CryptoStream(fsCrypt, aes.CreateEncryptor(), CryptoStreamMode.Write))
    using (StreamWriter sw = new StreamWriter(cs))
    {
        sw.Write("Secret data");
    }
}

关键词:C#文件操作、.NET文件流、异步文件IO、二进制读写、文件系统监控、ZIP压缩、跨平台路径、内存映射文件、异常处理、Span高性能

简介:本文系统梳理C#(.NET)环境下的文件操作体系,涵盖从基础流操作到高级文件管理的全场景解决方案。内容包含同步/异步文件读写、二进制与文本处理、目录管理、文件监控、ZIP压缩解压等核心功能,同时介绍跨平台路径处理、长路径支持、内存映射文件等现代开发技巧,最后提供异常处理最佳实践和.NET Core新增的高性能特性。

《C语言文件操作函数大全(超详细).doc》
将本文以doc文档格式下载到电脑,方便收藏和打印
推荐度:
点击下载文档