C# 中的 StreamReader 和 StreamWriter 类

在这里插入代码片StreamReader 和 StreamWriter 位于 System.IO 命名空间中。当您想要读取或写入基于字符的数据时,这两个类都很有用。这两个类都处理 Unicode 字符。

StreamReader 派生自抽象类“TextReader”,StreamWriter 派生自“TextWriter”。

下表显示了 StreamWriter 类的一些成员。

成员描述
Close()关闭当前StreamWriter对象和底层流,此方法相当于Dispose(),用于释放资源。
Write()此方法用于将数据写入不带换行符的文本流。
WriteLine()此方法用于将数据写入带有新行的文本流。

下表显示了 StreamReader 类的一些成员。

成员描述
Close()关闭当前StreamReader对象和底层流,此方法相当于Dispose(),用于释放资源。
Read()从输入流读取下一个字符。
ReadLine()从当前流中读取一行字符并以字符串形式返回数据。
ReadToEnd()从当前位置读取流直至流的末尾。

让我们看一个例子,我们使用 StreamWriter 将数据写入文件,并使用 StreamReader 从文件读取数据。为了读取或写入文件,File 类提供了 2 个方法,分别返回 StreamReader 或 StreamWriter 对象。

  • CreateText(string filepath):将数据写入文件;返回StreamWriter对象
  • OpenText(string filepath):从文件读取数据;返回一个StreamReader对象

下面介绍如何创建示例。

创建一个名为“StreamWriterAndStreamReaderExample”的新项目,并创建 2 个静态方法,一个用于读取文件,另一个用于写入文件。换句话说,就是 ReadFromFile() 和 WriteToFile()。在程序的源文件中导入 System.IO 命名空间,其中包含处理文件输入和输出的所有类。

在这个例子中,我们将把从 1 到 10 的表写入一个文件中,并使用这些类读取该文件。

Program.cs

class Program
{static void Main(string[] args){Console.ForegroundColor = ConsoleColor.Green;Console.Title = "StreamReader and StreamWriter";WriteToFile();ReadFromFile();Console.ForegroundColor = ConsoleColor.Gray;}public static void ReadFromFile(){using (StreamReader sr = File.OpenText(@"E:\Programming Practice\CSharp\Console\table.tbl")){string tables = null;while ((tables = sr.ReadLine()) != null){Console.WriteLine("{0}", tables);}Console.WriteLine("Table Printed.");}}public static void WriteToFile(){using (StreamWriter sw = File.CreateText(@"E:\Programming Practice\CSharp\Console\table.tbl")){sw.WriteLine("Please find the below generated table of 1 to 10");sw.WriteLine("");for (int i = 1; i <= 10; i++){for (int j = 1; j <= 10; j++){sw.WriteLine("{0}x{1}= {2}", i, j, (i * j));}sw.WriteLine("==============");}Console.WriteLine("Table successfully written on file.");}}
}

在前面的例子中,WriteToFile() 方法用于将数据写入文件“table.tbl”,然后使用 ReadFromFile() 方法从该文件读取数据。您可以创建具有任何扩展名的文件,如 .txt、.abc、.tlb 等。为了将数据写入文件,我们创建了一个 StreamWriter 对象,该对象调用 WriteLine() 方法来写入数据;为了从文件读取数据,我们创建了一个 StreamReader 对象,该对象调用 ReadLine() 方法;在读取文件时,数据将存储在 while 循环中的字符串中,直到读取所有数据。在 Main() 中调用这两个方法。

当您运行应用程序时,WriteToFile() 将在指定位置创建一个文件,如下所示。

用记事本打开此文件来查看内容。

输出

希望本文能帮助您理解 C# 中的 StreamReader 和 StreamWriter 类。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/36835.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python处理Excel 的常用操作详解

要在Python中处理Excel文件&#xff0c;可以使用openpyxl库来处理.xlsx文件&#xff0c;或者使用xlrd和xlwt&#xff08;或其升级版openpyxl&#xff09;来处理.xls文件。 请注意&#xff0c;你需要先安装 pandas 和 openpyxl 库才能运行代码。可以使用以下命令安装&#xff1a…

静态类和静态构造函数

静态类 概念 用static修饰的类。 特点 只能包含静态成员&#xff0c;不能被实例化。 作用 1.将常用的静态成员写在静态类中方便使用。 2.静态类不能被实例化&#xff0c;更能体现工具类的唯一性。 比如&#xff1a;Console就是一个静态类。 静态构造函数 概念 在构造…

springboot系列七: Lombok注解,Spring Initializr,yaml语法

老韩学生 LombokLombok介绍Lombok常用注解Lombok应用实例代码实现idea安装lombok插件 Spring InitializrSpring Initializr介绍Spring Initializr使用演示需求说明方式1: IDEA创建方式2: start.spring.io创建 注意事项和说明 yaml语法yaml介绍使用文档yaml基本语法数据类型字面…

C# 日志框架Serilog使用

1、框架和说明 C#日志框架Serilog支持多种场景输出&#xff0c;简单验证了一下&#xff0c;比较方便 包的安装&#xff0c;推荐直接使用“推荐NuGet包管理器”安装Serilog.AspNetCore&#xff0c;常见的组件都已经集成在一个包中&#xff0c;使用比较方便 2、配置文件 Serilog…

Rethinking Semantic Segmentation: A Prototype View 2022CVPR Oral

流行的语义分割方案的掩码解码策略&#xff08;基于参数softmax或基于像素查询&#xff09;视为可学习的类原型。本研究揭示了这种参数分割策略的几个局限性&#xff0c;并提出了一种基于不可学习原型的非参数替代方案。与之前的方法以完全参数化的方式为每个类学习单个权重/查…

【代码随想录算法训练营第五十二天|647.回文子串、516.最长回文子序列】

文章目录 647.回文子串动态规划双指针法 516.最长回文子序列 647.回文子串 动态规划 dp[i][j]指的是s[i:j1]这段是否是回文串&#xff0c;如果s[i]s[j]需要分三种情况来判断&#xff0c;如果ij或者ji1&#xff0c;那么就是回文串&#xff0c;否则还要看这中间的是否是回文串&…

Kubernetes面试整理-如何利用PodSecurityPolicies来提高集群的安全性?

PodSecurityPolicy (PSP) 是 Kubernetes 中用于定义和控制 Pod 安全配置的策略。通过 PSP,可以设置对 Pod 的一些安全约束条件,从而提高集群的安全性。虽然 PSP 从 Kubernetes 1.21 开始已被弃用,并在 1.25 版本中移除,但在一些旧版 Kubernetes 集群中,PSP 仍然是一个重要…

ubuntu22.04编译安装tesseract

1、 为什么用自己编译安装&#xff0c;而不采用apt安装&#xff1f; 由于tesseract有很多依赖包&#xff0c;直接用deb包或者rpm包等安装包安装很复杂&#xff0c;不一定能成功安装。 2、安装基本的依赖包 sudo apt update sudo apt install g autoconf automake libtool pkg…

Docker-Compose一键部署项目

Docker-Compose一键部署项目 目录 Docker-Compose一键部署项目介绍部署Django项目项目目录结构 docker-compose.ymlnginx的default.conf文件后端Dockerfile文件mysql.env一键部署DNS域名解析引起的跨域问题 介绍 Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的…

如何排查Java应用的死锁

排查Java应用中的死锁问题是一个复杂但重要的任务&#xff0c;因为死锁会导致应用程序停止响应&#xff0c;影响用户体验和系统稳定性。以下是一些方法和步骤&#xff0c;帮助你排查Java应用中的死锁。 1. 理解死锁的概念 在计算机科学中&#xff0c;死锁是指两个或多个线程相…

新手向导:掌握Axure RP的第一步

其实很多时候&#xff0c;我们很容易把教程做得太复杂&#xff0c;让学生失去重点被复杂的理论吓到。入门基础的时候只需要先弄清楚两个核心内容&#xff0c;学起来就容易多了:一是简单了解这个软件&#xff0c;二是学习这个软件的基本操作。所以如果你问我什么是好的 Axure RP…

cesium升级到116版本后底图和地形加载问题

cesium在2023-07-03 升级到了107版本&#xff0c;107版本加载底图和地形方式做了变更&#xff0c;之前的imageryProvider 和 CesiumTerrainProvider方式被remove掉了&#xff0c;换了另外方式。变更如下所示&#xff1a; cesium/CHANGES.md at 1.116 CesiumGS/cesium GitHub…

【QCustomPlot实战系列】QCPGraph折线图的渐变

包含折线图渐变效果以及QCPAxisTickerDateTime的使用 static QBrush GenerateLinearBrush(Qt::Orientation orientation) {qreal x 1;qreal y 0;if (orientation Qt::Vertical) {x0;y1.5;}QLinearGradient gradient(0, y, x, 0);gradient.setCoordinateMode(QLinearGradie…

USB描述符的一些解释

USB设备描述符、配置描述符和一些数据缓冲区的数组。让我们逐步解析这些数组中的值。 设备描述符 (Device Descriptor) UINT8C DevDesc[18] = {0x12, 0x01, 0x10, 0x01, 0xff, 0x00, 0x02, 0x08,0x86, 0x1a, 0x23, 0x55, 0x04, 0x03, 0x00, 0x00,0x00, 0x01};0x12 (18): 设备…

Spring Boot中的分布式缓存方案

Spring Boot中的分布式缓存方案 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨在Spring Boot应用中实现分布式缓存的方案&#xff0c;以提升系统…

软件需求管理规程(DOC原件)

软件需求管理规程是确保软件开发过程中需求清晰、一致、可追踪的关键环节&#xff1a; 明确需求&#xff1a;项目初期&#xff0c;与利益相关者明确项目目标和需求&#xff0c;确保需求完整、无歧义。需求评审&#xff1a;组织专家团队对需求进行评审&#xff0c;识别潜在风险和…

解释Java中的接口和抽象类的使用场景。

在Java中&#xff0c;接口和抽象类是两种特殊的类类型&#xff0c;它们各自有不同的使用场景。 **接口&#xff08;Interface&#xff09;** 接口是一种契约&#xff0c;它定义了一组方法的契约&#xff0c;这些方法在实现类中必须实现。它们常常被用来定义一种规范或者标准&…

【前端】前端文件下载方式盘点

前端文件下载方式盘点 在前端开发中&#xff0c;文件下载是一个常见的功能需求。本文将介绍几种常见的前端文件下载方式&#xff0c;分析各自的优缺点&#xff0c;并提供具体的实现代码。 1. 使用 HTML 的 <a> 标签 优点 简单易用&#xff0c;适用于下载静态文件。浏…

【SQL】⼀条更新语句的执行流程

在关系型数据库管理系统&#xff08;RDBMS&#xff09;中&#xff0c;一条更新语句&#xff08;例如UPDATE语句&#xff09;的执行流程涉及多个步骤&#xff0c;以确保数据的一致性、完整性和高效性。以下是典型的更新语句执行流程的概述&#xff1a; 解析&#xff08;Parsing&…

CPU的核心和线程怎么理解,选购机器如何考虑CPU性能

CPU的核心和线程是计算机处理器的两个重要概念。 CPU核心&#xff1a;CPU核心是指CPU内部实际执行指令的独立单元&#xff0c;每个核心可以独立处理任务。一个CPU可以有一个或多个核心&#xff0c;多核心CPU可以同时处理多个任务&#xff0c;提高计算机的性能。例如&#xff0c…