C#的文件 I/O

举报
Rolle 发表于 2024/10/31 20:41:02 2024/10/31
【摘要】 文件 I/O(输入/输出)是任何应用程序中不可或缺的一部分,无论是读取配置文件、写入日志还是处理用户数据。C# 提供了一套强大且灵活的文件 I/O 功能,使得在 .NET 应用程序中处理文件变得简单而高效。本文将深入探讨 C# 中文件 I/O 的核心概念、API、最佳实践以及一些高级技巧。文件 I/O 的核心概念在 C# 中,文件 I/O 操作主要涉及以下几个核心概念:流(Streams):...

文件 I/O(输入/输出)是任何应用程序中不可或缺的一部分,无论是读取配置文件、写入日志还是处理用户数据。C# 提供了一套强大且灵活的文件 I/O 功能,使得在 .NET 应用程序中处理文件变得简单而高效。本文将深入探讨 C# 中文件 I/O 的核心概念、API、最佳实践以及一些高级技巧。

文件 I/O 的核心概念
在 C# 中,文件 I/O 操作主要涉及以下几个核心概念:

流(Streams):数据的连续序列,可以是字节流或文本流。
文件访问模式:如读取、写入、追加等。
文件共享:控制文件在多个进程间的访问。
缓冲:提高文件操作的性能。
异步 I/O:避免阻塞主线程,提高应用程序的响应性。
核心 API
System.IO 命名空间
C# 的文件 I/O 功能主要封装在 System.IO 命名空间中,提供了丰富的类和方法来处理文件和目录。

常用的文件 I/O 类
File 类:提供静态方法来创建、复制、删除、移动和打开文件。
FileInfo 类:提供实例方法来操作文件。
FileStream 类:表示文件的流,用于读写文件。
StreamReader 类:用于从文本文件中读取字符。
StreamWriter 类:用于向文本文件写入字符。
Directory 类 和 DirectoryInfo 类:用于操作目录。
Path 类:提供操作文件路径的方法。
基本操作
读取文件
使用 File.ReadAllText 方法
string content = File.ReadAllText(“example.txt”);
使用 StreamReader
using (StreamReader reader = new StreamReader(“example.txt”))
{
string content = reader.ReadToEnd();
}
写入文件
使用 File.WriteAllText 方法
File.WriteAllText(“example.txt”, “Hello, World!”);
使用 StreamWriter
using (StreamWriter writer = new StreamWriter(“example.txt”))
{
writer.WriteLine(“Hello, World!”);
}
追加文件
using (StreamWriter writer = new StreamWriter(“example.txt”, append: true))
{
writer.WriteLine(“Appended text.”);
}
复制、移动和删除文件
// 复制文件
File.Copy(“source.txt”, “destination.txt”);

// 移动文件
File.Move(“source.txt”, “newLocation.txt”);

// 删除文件
File.Delete(“example.txt”);
高级操作
异步文件 I/O
使用 ReadAllTextAsync 和 WriteAllTextAsync
await File.WriteAllTextAsync(“example.txt”, “Hello, World!”);
使用 FileStream 进行异步读写
using (FileStream stream = new FileStream(“example.bin”, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None, 4096, useAsync: true))
{
byte[] data = new byte[stream.Length];
await stream.ReadAsync(data, 0, data.Length);
// 处理数据…
}
处理大文件
对于大文件,使用流式处理可以避免内存溢出。
using (StreamReader reader = new StreamReader(“largefile.txt”))
{
string line;
while ((line = reader.ReadLine()) != null)
{
// 处理每一行
}
}
文件访问模式和共享
using (FileStream stream = new FileStream(“example.txt”, FileMode.Open, FileAccess.Read, FileShare.Read))
{
// 读取文件
}
缓冲和性能
使用缓冲可以显著提高文件操作的性能。
using (BufferedStream buffer = new BufferedStream(stream))
{
// 读写操作
}
监控文件系统
使用 FileSystemWatcher 来监控文件和目录的变化。
using (FileSystemWatcher watcher = new FileSystemWatcher())
{
watcher.Path = “C:\examplePath”;
watcher.NotifyFilter = NotifyFilters.LastWrite;
watcher.Filter = “*.txt”;

watcher.Changed += OnChanged;
watcher.EnableRaisingEvents = true;

}

static void OnChanged(object source, FileSystemEventArgs e)
{
Console.WriteLine($“File: {e.FullPath} {e.ChangeType}”);
}
错误处理
在进行文件 I/O 操作时,应该考虑到可能发生的异常,如 IOException、UnauthorizedAccessException 等。
try
{
// 文件操作…
}
catch (IOException ex)
{
// 处理 I/O 异常
}
catch (UnauthorizedAccessException ex)
{
// 处理访问权限异常
}

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。