C# 使用 FileStream 读取文件的正确做法

宋时安
宋时安
发布时间:2026-10-14| 3人浏览过
原创

本文详细解析了C#中使用FileStream进行文件读取的标准实现方式,包括核心类的引入、文件路径的设定以及打开模式的配置。

结果或目标

在C#程序开发中,准确且安全地读取本地文件是基础且常见的需求。通过System.IO命名空间下的FileInfo类和FileStream类,可以获取对底层文件的直接访问权限。最终目标是创建一个处于“只读”状态的打开文件流对象,供后续的数据读取逻辑使用。

准备条件

  1. 环境要求:需具备.NET运行库支持,能够编译运行C#代码(如Visual Studio、VS Code配合dotnet SDK)。
  2. 依赖引入:代码顶部必须导入System和System.IO命名空间,这是访问文件流操作的基础。
  3. 测试文件:准备一个用于读取的文本文件(例如 Testing.txt),确保路径存在且具有基本的读写权限。

真实操作顺序

第1步:定义文件信息对象

目的:封装文件的路径和基本属性,避免直接使用字符串路径可能带来的错误。
入口:System.IO.FileInfo 类。
动作:实例化 FileInfo 对象,传入文件的绝对路径。
重要参数:建议使用带有 @ 符号的逐字字符串(Verbatim string)来处理包含反斜杠 \ 的路径。

using System;
using System.IO;
namespace Client.Chapter_11___File_and_Streams
{
 public class OpenExistingFile {
 static void Main(string[] args)
 { // 指定文件的实际路径
  FileInfo MyFile = new FileInfo(@"c:\Projects\Testing.txt");
 
 }

第2步:配置并打开文件流

目的:获取指向该文件的物理连接(流),同时明确对文件的操作意图(打开、读取等)。
入口:调用 MyFile.Open() 方法。
动作:传递三个枚举参数来确定打开行为:

  • FileMode.Open:确保文件必须已存在,若不存在则抛出异常。
  • FileAccess.Read:将流限制为只读,防止意外修改文件内容。
  • FileShare.None:拒绝其他进程在保持此流打开期间对该文件的任何访问(独占锁)。
 // ... (接上一步)
 FileStream MyStream;
 // 以只读、独占方式打开文件
 MyStream = MyFile.Open(FileMode.Open, FileAccess.Read, FileShare.None);
 }
 }
}

完成判断

当代码执行到 MyFile.Open 语句后,内存中将生成一个有效的 FileStream 对象实例(此处命名为 MyStream)。如果文件路径无效或无权限访问,程序将在此处中断并抛出 IOException;若一切正常,则该变量持有有效的流句柄,可以进行后续的 Read 操作。

原文有依据的排错

路径转义问题:在Windows系统中,路径分隔符通常为 \。在C#常规字符串中这被视为转义字符(如 \t 代表制表符)。因此,必须在路径前添加 @ 符号(即 "@\path"),否则编译器可能会报错或路径识别失败。

简要总结

本例通过结合 FileInfo 的描述能力与 FileStream.Open 的控制能力,展示了一种标准的文件流开启方式。这种方法虽然较基础的 File.ReadAllText 稍显繁琐,但它允许开发者更精细地控制并发访问(FileShare)和数据操作模式,适用于对资源访问有严格要求的场景。

以上就是C#使用文件流读取文件的详细内容,更多关于C#程序设计技巧的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。