.NET文件与流操作全解析

立即解锁
发布时间: 2025-09-15 00:32:04 阅读量: 3 订阅数: 12 AIGC
### .NET 文件与流操作全解析 在 .NET 编程中,文件和流操作是非常重要的一部分。下面将详细介绍相关的类和方法,帮助你更好地进行文件操作。 #### 1. 旧重载的过时 在 .NET 2.0 引入了一种表示操作系统句柄的新方式后,四种重载方法变得过时。那些接受 `IntPtr` 的重载方法被弃用,取而代之的是接受 `SafeFileHandle` 的新方法。 #### 2. 文件和目录操作概述 之前介绍的抽象概念通用性很强。例如,使用 `Stream` 时,无需知道字节的来源和去向;`TextReader` 和 `TextWriter` 也不要求数据有特定的来源或目的地。这使得代码可以应用于多种场景,如基于流的 `GZipStream` 可以对文件、网络连接或其他流中的数据进行压缩或解压缩。然而,当明确要处理文件并使用文件特定的功能时,就需要使用专门的类。 #### 3. FileStream 类 `FileStream` 类继承自 `Stream`,代表文件系统中的一个文件。它在基类的基础上增加的成员相对较少。`Lock` 和 `Unlock` 方法可在多进程使用单个文件时,获取对特定字节范围的独占访问权;`Name` 属性可获取文件名。 ##### 3.1 构造函数 `FileStream` 的构造函数提供了很大的控制权,不考虑标记为 `[Obsolete]` 的构造函数,至少有 10 种构造函数重载。创建 `FileStream` 的方式可分为两类: - 已有操作系统文件句柄:需要通过 `FileAccess` 枚举值告知 `FileStream` 该句柄对文件的访问权限(读、写或读写)。 - 没有操作系统文件句柄:更常用的方式是让 `FileStream` 使用操作系统 API 为你创建文件句柄。至少需要指定文件路径和 `FileMode` 枚举值。 `FileMode` 枚举值及其行为如下表所示: | 值 | 文件存在时的行为 | 文件不存在时的行为 | | ---- | ---- | ---- | | CreateNew | 抛出 `IOException` | 创建新文件 | | Create | 替换现有文件 | 创建新文件 | | Open | 打开现有文件 | 抛出 `FileNotFoundException` | | OpenOrCreate | 打开现有文件 | 创建新文件 | | Truncate | 替换现有文件 | 抛出 `FileNotFoundException` | | Append | 打开现有文件,将 `Position` 设置为文件末尾 | 创建新文件 | 还可以选择指定 `FileAccess`。如果不指定,除了选择 `Append` 模式外,`FileStream` 默认使用 `FileAccess.ReadWrite`。在 `Append` 模式下,文件只能写入,因此 `FileStream` 会选择 `Write`。如果在 `Append` 模式下传递除 `Write` 以外的 `FileAccess`,构造函数会抛出 `ArgumentException`。 以下是接受文件路径的 `FileStream` 构造函数示例: ```csharp public FileStream(string path, FileMode mode) public FileStream(string path, FileMode mode, FileAccess access) public FileStream(string path, FileMode mode, FileAccess access, FileShare share) public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize) public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, bool useAsync) public FileStream(string path, FileMode mode, FileAccess access, FileShare share, int bufferSize, FileOptions options) ``` ##### 3.2 FileShare 参数 接受 `FileShare` 类型参数的构造函数可让你指定是否需要对文件的独占访问权。 - `FileShare.None`:如果文件已在其他地方打开,构造函数会抛出 `IOException`;如果成功打开,在使用完之前,其他代码无法打开该文件。 - 其他值:可以允许其他进程或代码同时打开文件,并指定是否允许其他用户对文件进行读、写或读写操作。`FileShare` 是一个标志枚举,常见的组合 `FileShare.Read|FileShare.Write` 可使用预定义的 `ReadWrite` 值。 不接受显式 `FileShare` 参数的构造函数默认使用 `FileShare.Read`,表示代码允许其他代码同时以只读方式打开同一文件。例如,写入日志文件时,可使用 `FileMode.Append` 和 `FileShare.Read`,这样只有自己的代码可以追加日志条目,而其他代码可以以只读方式打开文件读取日志。 如果尝试打开已被其他代码打开的文件,只有指定的 `FileAccess` 和 `FileShare` 与先打开文件的代码使用的 `FileShare` 兼容时才能成功。同样,如果自己的代码已打开文件,选择的 `FileShare` 会决定其他代码在自己使用文件时可以成功应用的 `FileAc
corwn 最低0.47元/天 解锁专栏
买1年送3月
继续阅读 点击查看下一篇
profit 400次 会员资源下载次数
profit 300万+ 优质博客文章
profit 1000万+ 优质下载资源
profit 1000万+ 优质文库回答
复制全文

相关推荐

李_涛

知名公司架构师
拥有多年在大型科技公司的工作经验,曾在多个大厂担任技术主管和架构师一职。擅长设计和开发高效稳定的后端系统,熟练掌握多种后端开发语言和框架,包括Java、Python、Spring、Django等。精通关系型数据库和NoSQL数据库的设计和优化,能够有效地处理海量数据和复杂查询。
最低0.47元/天 解锁专栏
买1年送3月
百万级 高质量VIP文章无限畅学
千万级 优质资源任意下载
千万级 优质文库回答免费看
立即解锁

专栏目录

最新推荐

【深度长文】多层膜结构中倏逝波传播机制揭秘:透射率影响因素全解析

![计算多层膜结构的透射率,多层膜反射率计算,matlab源码.zip](http://www.caemolding.org/cmm/wp-content/uploads/2019/02/%E5%A1%91%E8%86%A0%E5%85%89%E5%AD%B8%E5%9C%96%E8%A1%A82.png) # 摘要 本文系统研究了多层膜结构中倏逝波的传播特性及其调控方法,涵盖从基础理论到实验验证与应用分析的全过程。首先,基于麦克斯韦方程组,推导了倏逝波在多层介质界面传播的物理机制与数学模型,阐明其衰减行为与模态分类。随后,构建了基于传输矩阵法(TMM)的透射率计算模型,分析了膜层厚度、

兼容性根因定位实录:不同厂商LPDDR4模组SPD差异引发开机异常的8种排查方法

![兼容性根因定位实录:不同厂商LPDDR4模组SPD差异引发开机异常的8种排查方法](https://www.androidauthority.com/wp-content/uploads/2015/04/LPDDR4-feature-comparison.jpg) # 摘要 本文围绕LPDDR4内存模组及其SPD信息展开,系统分析了内存兼容性问题的成因与排查方法。重点探讨了SPD在内存识别与BIOS初始化过程中的关键作用,以及不同厂商SPD实现差异对系统启动稳定性的影响。通过介绍SPD数据比对、BIOS日志分析、兼容性测试环境搭建等方法,本文提出了针对SPD差异导致开机异常的八种排查

应对中证500调仓冲击的量化策略:高频再平衡算法设计思路与实操建议

# 摘要 本文系统研究中证500指数调仓机制对量化策略设计与执行的影响,结合市场微观结构特征构建高频再平衡策略模型。通过分析调仓周期、成分股变动规律及市场反应统计特性,建立以动态权重调整为核心、融合风险控制因子的数学优化框架,并设计完整的回测体系评估策略绩效。在工程层面,实现涵盖实时数据处理、算法交易引擎与多维度风险控制的自动化系统。进一步提出冲击成本管理、多因子增强及强化学习优化路径,探索跨市场联动策略的应用前景。最后讨论策略实施中的合规要求与未来发展趋势,为量化投资实践提供理论支持与操作指南。 # 关键字 中证500;调仓机制;高频再平衡;算法交易;风险控制;强化学习 参考

功耗估算与调优策略:低功耗FPGA游戏系统的5项优化实践

![FPGA贪食蛇游戏](https://projectfpga.com/images/vga9.jpg) # 摘要 本文针对低功耗FPGA游戏系统的设计与优化展开系统性研究,首先分析FPGA的功耗构成,建立基于静态与动态功耗的估算模型,并利用Xilinx Power Estimator等工具实现精准功耗预测。随后从架构级、RTL级到布局布线阶段提出多层次低功耗优化策略,涵盖状态机编码、时钟门控、资源合并等关键技术。结合游戏系统实际案例,验证了在引擎控制、图形渲染与外设通信等模块中应用休眠机制、动态调节与协议优化的有效性。最后通过构建测试平台进行功耗测量与性能评估,结果表明所采用的优化方

区块链重构供应商信任机制:应用场景与技术挑战全面曝光

![Tesla Supplier Handbook(特斯拉供应商手册) BMS-0000051 Rev 6.zip](https://media.licdn.com/dms/image/C5612AQGhdcfx59rMkQ/article-cover_image-shrink_600_2000/0/1632922629238?e=2147483647&v=beta&t=jrfO9QsASxVt2BWkvxfqaeSasA7zxaYZ5evc_H9f8mk) # 摘要 区块链技术为重构供应商信任机制提供了全新的技术路径,通过分布式账本、共识机制与智能合约,实现去中心化、可追溯且不可篡改的

KMGD6001BM-B421输出电压灵活调节技巧:满足多样化供电需求

# 摘要 KMGD6001BM-B421是一款高性能电源管理芯片,广泛应用于多场景供电系统中。本文系统阐述了该芯片的电压调节机制,基于反馈环路、参考电压源及电阻网络构建可调输出的数学模型,并分析动态负载下环路带宽与补偿设计对响应特性的影响。针对实际应用,提出了固定输出、电位器调节及数字远程控制三种配置方法,结合PCB布局与抗干扰措施提升稳定性。进一步探讨其在多路负载匹配、节能运行及极端环境下的优化策略,并通过典型项目案例验证其可靠性与适应性,为电源系统设计提供理论支持与实践指导。 # 关键字 KMGD6001BM-B421;电压调节;反馈环路;动态负载响应;补偿网络;自适应电压调

从采集到智能分析:ADS-B航空大数据完整路径全解读

![ADS-B](https://m.media-amazon.com/images/I/51mRWNGJWAL._AC_UF1000,1000_QL80_.jpg) # 摘要 本文系统研究了ADS-B航空数据从采集到智能应用的全流程技术架构与关键方法。首先阐述ADS-B基本原理与系统组成,进而深入探讨基于SDR的信号接收、数据解码与预处理技术,提出针对信号干扰、丢包及时间不同步等问题的优化策略。在数据管理方面,对比时序数据库选型并构建基于Kafka与Flink的实时处理流水线,实现高效存储与流式计算。进一步地,结合卡尔曼滤波、LSTM等算法开展航迹重建、飞行行为分析与轨迹预测,并建立空

DPI感知与高清屏适配:彻底解决高分屏截图模糊

![DPI感知与高清屏适配:彻底解决高分屏截图模糊](https://media.geeksforgeeks.org/wp-content/cdn-uploads/20220203233320/Group-2-4.jpg) # 摘要 随着高分辨率屏幕的普及,DPI感知与高清屏适配成为提升用户体验的关键技术。本文系统阐述了DPI与屏幕缩放的技术原理,分析了高分屏下截图模糊的根本原因,包括图像缩放误差、渲染机制差异及多DPI环境下的兼容性问题。针对上述问题,论文提出了从程序配置、截图技术到图像处理的完整解决方案,涵盖高DPI感知启用、现代图形API应用及GPU加速的图像优化算法。并通过实际开

【权威指南】LabVIEW+SQL Server构建工业级配方管理系统(架构+性能优化)

![LabVIEW配方系统](https://www.apexwaves.com/blog/wp-content/uploads/2022/10/Screenshot-2022-10-27-132907-1024x572.png) # 摘要 本文围绕工业级配方管理系统的架构设计与LabVIEW集成展开,系统分析了LabVIEW与SQL Server之间的数据交互机制,涵盖数据库连接技术、CRUD操作实现及多线程环境下数据一致性保障策略。文章重点阐述了系统核心功能的开发实践,包括配方结构建模、权限管理与实时设备联动控制,并针对性能瓶颈提出优化方案,如SQL Server调优、异步处理与网络

UML建模规范权威指南:写出高质量、易维护模型文件的8项标准准则

# 摘要 UML建模在软件工程中具有核心价值,对于系统设计的规范性、可维护性及团队协作效率具有重要意义。本文系统阐述了UML建模的基础理论、核心元素及其标准化准则,分析了高质量模型应遵循的八项标准,并探讨了建模过程中常见的误区与应对策略。文章进一步结合面向对象设计方法,介绍了用例建模、类图设计与交互图表达的实践技巧,讨论了模型版本控制、重构优化及建模工具的应用策略,旨在提升UML模型的可扩展性与可维护性。通过企业级项目中的最佳实践分析,本文为构建规范、高效、可持续演进的UML模型提供了系统性的方法论支持。 # 关键字 UML建模;面向对象设计;模型规范;可维护性;可扩展性;建模工具