C# 文件IO

news/2024/11/30 13:02:19/

文章目录

  • 前言
  • 一、C# I/O 类:丰富的文件操作工具集
  • 二、FileStream 类
    • (一)创建 FileStream 对象
  • 三、C# 高级文件操作:挖掘更多强大功能
    • (一)文本文件的读写
    • (二)二进制文件的读写
    • (三)Windows 文件系统的操作


前言

  流就是通过通信路径传递的字节序列,而在文件操作里,主要存在两个关键的流类型:输入流与输出流。输入流负责从文件中读取数据,也就是执行读操作;输出流则承担着向文件写入数据的任务,即进行写操作。
在这里插入图片描述

一、C# I/O 类:丰富的文件操作工具集

  System.IO 命名空间犹如一个装满各种工具的宝库,其中包含了形形色色的类,这些类能够帮助我们执行各式各样的文件操作,涵盖了从文件的创建、删除,到数据的读取、写入,再到文件的关闭等全流程操作。以下是对该命名空间中一些常用的非抽象类的详细介绍:
在这里插入图片描述

二、FileStream 类

(一)创建 FileStream 对象

  要想利用 FileStream 类进行文件操作,首先需要创建一个 FileStream 对象,其语法如下:

FileStream <object_name> = new FileStream( <file_name>,
<FileMode Enumerator>, <FileAccess Enumerator>, <FileShare Enumerator>);

  例如,若要创建一个 FileStream 对象 F 来读取名为 sample.txt 的文件,可以这样写:

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);

  在这里,各个参数都有着明确且重要的含义,它们共同决定了文件的打开方式以及后续的读写权限等关键属性。
在这里插入图片描述
  以下是一个展示 FileStream 类用法的实例:

using System;
using System.IO;namespace FileIOApplication
{class Program{static void Main(string[] args){FileStream F = new FileStream("test.dat",FileMode.OpenOrCreate, FileAccess.ReadWrite);for (int i = 1; i <= 20; i++){F.WriteByte((byte)i);}F.Position = 0;for (int i = 0; i <= 20; i++){Console.Write(F.ReadByte() + " ");}F.Close();Console.ReadKey();}}
}

  当上述代码被编译和执行时,先是通过 FileStream 对象 F 以读写权限打开(如果不存在则创建)名为 test.dat 的文件,然后循环向文件里写入字节数据(从 1 到 20),接着将文件指针位置重置为 0,再循环读取文件中的字节数据并输出,最终关闭文件,输出结果为:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

三、C# 高级文件操作:挖掘更多强大功能

  前面的实例仅仅展示了 C# 中较为简单的文件操作方式,而要想充分发挥 System.IO 类的强大威力,深入了解这些类常用的属性和方法是必不可少的。接下来我们将探讨几个重要的高级文件操作主题:

(一)文本文件的读写

  文本文件的读写操作极为常见,这就涉及到 StreamReader 和 StreamWriter 类的应用。StreamReader 类专门用于从字节流中读取字符,它能够轻松地将文本文件里的字符数据按照一定规则解析出来,方便我们在程序中进行处理,比如读取配置文件里的文本配置项、读取文本格式的日志内容等场景。而 StreamWriter 类则是用于向一个流中写入字符,通过它可以将我们想要保存的文本内容准确无误地写入到文本文件中,例如将用户输入的文本信息保存为一个文本文件,或者实时更新文本格式的日志文件等操作都离不开 StreamWriter 类的支持。

(二)二进制文件的读写

  对于二进制文件的读写操作,BinaryReader 和 BinaryWriter 类就派上了用场。如前文所述,BinaryReader 能够从二进制流读取原始数据,在处理像图片、音频、视频等以二进制形式存储的文件,或者自定义二进制格式的数据文件时,它可以帮助我们精确地解析出其中的各个数据部分,为后续的处理提供基础。与之对应的 BinaryWriter 类,以二进制格式将原始数据写入相应的流,比如我们要生成一个特定结构的二进制文件来存储程序运行的关键数据,就可以利用 BinaryWriter 类按照预定的二进制格式规则进行数据写入操作。

(三)Windows 文件系统的操作

  这一功能让 C# 程序员能够轻松地浏览并定位 Windows 文件和目录,借助 Directory、DirectoryInfo、File、FileInfo 等相关类的协同作用,可以实现诸如查看文件夹下的文件列表、获取文件的详细属性、创建或删除文件夹及文件等丰富多样的操作,从而打造出功能强大的文件管理应用程序,满足各种实际业务场景中对文件系统操作的需求,像是开发一个本地文件搜索引擎、文件同步工具等应用都需要深入运用这些文件系统操作相关的功能。
在这里插入图片描述


http://www.ppmy.cn/news/1551202.html

相关文章

【DFS】个人练习-Leetcode-646. Maximum Length of Pair Chain

题目链接&#xff1a;https://leetcode.cn/problems/maximum-length-of-pair-chain/description/ 题目大意&#xff1a;给出一系列区间pairs[][]&#xff0c;如果某两个区间[a, b], [c, d]满足b < c&#xff0c;这两个区间就可以串起来[a, b] -> [c, d]。求能够串起来的…

QChart数据可视化

目录 一、QChart基本介绍 1.1 QChart基本概念与用途 1.2 主要类的介绍 1.2.1 QChartView类 1.2.2 QChart类 1.2.3QAbstractSeries类 1.2.4 QAbstractAxis类 1.2.5 QLegendMarker 二、与图表交互 1. 动态绘制数据 2. 深入数据 3. 缩放和滚动 4. 鼠标悬停 三、主题 …

AI开发:逻辑回归 - 实战演练- 垃圾邮件的识别(一)

逻辑回归的概念和演示 逻辑回归&#xff08;Logistic Regression&#xff09;最常用于二分类问题&#xff0c;即目标变量&#xff08;标签&#xff09;只有两个类别的场景。它通过拟合一个S形的Sigmoid函数来预测一个事件发生的概率&#xff0c;输出值在0到1之间&#xff0c;可…

云计算虚拟化-kvm-无损扩容磁盘分区

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 虚拟化&#xff0c;简单来说就是把一台服务器/PC电脑&#xff0c;虚拟成多台独立的虚拟机&#xff0c;每台虚拟机之间相互隔…

嵌入式开发调试优化:使用 Python 脚本提升效率

嵌入式开发是一项复杂且具有挑战性的工作&#xff0c;尤其是在调试过程中&#xff0c;开发者需要面对各种硬件与软件的交互问题。为了有效提高调试效率&#xff0c;使用自动化工具和脚本可以大大简化流程。在这篇文章中&#xff0c;我将分享几种常见的 Python 脚本&#xff0c;…

基础入门-Web应用架构搭建域名源码站库分离MVC模型解析受限对应路径

知识点&#xff1a; 1、基础入门-Web应用-域名上的技术要点 2、基础入门-Web应用-源码上的技术要点 3、基础入门-Web应用-数据上的技术要点 4、基础入门-Web应用-解析上的技术要点 5、基础入门-Web应用-平台上的技术要点 一、演示案例-域名差异-主站&分站&端口站&…

Git 使用总结

下载 git bash&#xff1a;http://git-scm.com/download/win 从github仓库中下载项目到本地&#xff1a;git clone 项目网址&#xff0c;得到一个文件夹 … 修改文件 … 修改完成后&#xff0c;进行上传的过程&#xff1a; 文件夹右键通过 git bash 进入 初始化&#xff1a;g…

Springboot组合SpringSecurity安全插件基于密码的验证Demo

Springboot组合SpringSecurity安全插件基于密码的验证Demo!下面的案例&#xff0c;都是基于数据库mysql&#xff0c;用户密码&#xff0c;验证登录的策略demo。 1&#xff1b;引入maven仓库的坐标 <dependency><groupId>org.springframework.boot</groupId>…