C#--StreamWriter和StreamReader对象及常用函数

目录

  • StreamReader
    • ReadLine()
    • Split()
  • StreamWriter
    • WriteLine()
    • Flush()
    • Close()

StreamReader

StreamReader 是 C# 中用于从流(如文件、内存流等)中读取文本数据的类。它提供了多种方法来读取不同类型的数据。以下是一些 StreamReader 类的常用方法:

StreamReader(Stream): 构造函数,创建一个新的 StreamReader 实例,将其连接到指定的流对象,用于从流中读取数据。
Read(): 从流中读取一个字符,并将其作为整数值返回。如果到达了流的末尾,则返回 -1。
ReadLine(): 从流中读取一行字符,并将其作为字符串返回。如果到达了流的末尾,则返回 null。
ReadToEnd(): 从流的当前位置读取到末尾,并将所有字符作为字符串返回。
Peek(): 返回流中下一个可用的字符,但不将其移动到输入流中。
Close(): 关闭 StreamReader 对象,并释放关联的资源。
StreamReader 类可以方便地从流中读取文本数据,并且它可以与其他文本读写类(如 StreamWriter)配合使用,实现对文件的读写操作。

ReadLine()

ReadLine() 是 StreamReader 类的一个方法,用于从流中读取一行字符,并将其作为字符串返回。以下是该方法的解释:

ReadLine() 方法从流中读取一行字符,直到遇到换行符为止(即 \n、\r 或 \r\n),然后将读取到的字符作为一个字符串返回。
如果到达了流的末尾,即已经读取到文件的最后一行,则返回 null。
该方法通常用于按行读取文本文件,每次调用 ReadLine() 方法会读取文件中的下一行文本数据,并将其作为一个字符串返回。
以下是一个示例代码,演示了如何使用 StreamReader 的 ReadLine() 方法从文件中逐行读取数据:

using System;
using System.IO;class Program
{static void Main(){string filePath = @"D:\C#\WaterCloudModel\example.txt";// 创建一个 StreamReader 对象来读取文件using (StreamReader sr = new StreamReader(filePath)){string line;// 逐行读取文件中的数据,并输出到控制台while ((line = sr.ReadLine()) != null){Console.WriteLine(line);}}}
}

在上面的示例中,我们创建了一个 StreamReader 对象 sr,并使用 ReadLine() 方法逐行读取文件中的数据,直到文件的末尾。每次调用 ReadLine() 方法都会返回文件中的一行文本数据,然后将其输出到控制台。

Split()

Split 是一个字符串方法,用于将字符串根据指定的分隔符拆分成子字符串数组。以下是该方法的解释:

Split 方法接收一个字符数组或字符串数组作为分隔符参数,并将调用该方法的字符串根据这些分隔符进行拆分。
该方法返回一个字符串数组,其中包含了根据分隔符拆分后的子字符串。
如果字符串中没有分隔符,Split 方法会返回一个只包含原始字符串的数组。
可以通过传递第二个参数来限制拆分后的子字符串的数量,这样可以指定最大拆分数。
以下是一个示例代码,演示了如何使用 Split 方法将字符串按照空格进行拆分:

StreamWriter

StreamWriter 是 C# 中用于将文本数据写入到流(如文件、内存流等)中的类。它提供了多种方法来写入不同类型的数据到流中。以下是一些 StreamWriter 类的常用方法:

StreamWriter(TextWriter): 构造函数,创建一个新的 StreamWriter 实例,将其连接到指定的 TextWriter 对象,用于写入数据。
Write(string): 将指定的字符串写入到流中。
WriteLine(string): 将指定的字符串写入到流中,并在其后添加一个换行符。
Write(char): 将指定的字符写入到流中。
WriteLine(char): 将指定的字符写入到流中,并在其后添加一个换行符。
Write(int): 将指定的整数值写入到流中。
WriteLine(int): 将指定的整数值写入到流中,并在其后添加一个换行符。
Write(double): 将指定的双精度浮点数值写入到流中。
WriteLine(double): 将指定的双精度浮点数值写入到流中,并在其后添加一个换行符。
Flush(): 将缓冲区中的数据立即写入到基础流中,并清空缓冲区。
Close(): 关闭 StreamWriter 对象,并释放关联的资源。
StreamWriter 类提供了方便的方法来向流中写入文本数据,并且它可以与其他文本读写类(如 StreamReader)配合使用,实现对文件的读写操作。

WriteLine()

WriteLine 是 StreamWriter 类的一个方法,用于向流中写入一个字符串,并在其后添加一个换行符。以下是该方法的解释:

WriteLine 方法接收一个字符串参数,并将该字符串写入到流中。
在写入字符串后,WriteLine 方法会自动在其后添加一个换行符,以便下一个写入操作从新的一行开始。
使用 WriteLine 方法写入的字符串将会占据一行,并且每次调用该方法都会写入一个新的行。
以下是一个示例代码,演示了如何使用 WriteLine 方法向文件中写入多行数据:

using System;
using System.IO;class Program
{static void Main(){string filePath = @"D:\C#\WaterCloudModel\example.txt";// 创建一个 StreamWriter 对象来写入文件using (StreamWriter sw = new StreamWriter(filePath)){// 使用 WriteLine 方法写入多行数据sw.WriteLine("Hello, world!");sw.WriteLine("This is line 2.");sw.WriteLine("And this is line 3.");}}
}

在上面的示例中,我们创建了一个 StreamWriter 对象 sw,并使用 WriteLine 方法向文件中写入了三行数据。每次调用 WriteLine 方法都会写入一个新的行,并自动在其后添加一个换行符。

Flush()

Flush() 是 StreamWriter 类的一个方法,用于强制将缓冲区中的数据写入到基础流(即文件流)中,并清空缓冲区。以下是该方法的解释:

Flush() 方法会立即将所有缓冲的数据写入到基础流中,并清空缓冲区,以确保数据被及时写入到文件中。
这在需要确保文件中的数据被立即写入到磁盘中时非常有用,例如在关闭文件之前调用该方法可以确保文件中的所有数据都被写入。
如果不调用 Flush() 方法,StreamWriter 类会在缓冲区填满或关闭时自动将数据写入到基础流中,但有时可能需要立即刷新数据以确保数据的完整性和一致性。
以下是一个示例代码,演示了如何使用 Flush 方法将缓冲区中的数据立即写入到文件中:

using System;
using System.IO;class Program
{static void Main(){string filePath = @"D:\C#\WaterCloudModel\example.txt";// 创建一个 StreamWriter 对象来写入文件using (StreamWriter sw = new StreamWriter(filePath)){// 写入数据到文件sw.WriteLine("Hello, world!");// 调用 Flush 方法,强制将缓冲区中的数据写入到文件中sw.Flush();// 继续写入其他数据...}}
}

在上面的示例中,我们创建了一个 StreamWriter 对象 sw,并使用 WriteLine 方法向文件中写入了一行数据。然后调用 Flush 方法,强制将缓冲区中的数据写入到文件中。这样可以确保在关闭文件之前,所有数据都被立即写入到文件中。

Close()

Close() 是 StreamWriter 类的一个方法,用于关闭流并释放关联的资源。以下是该方法的解释:

Close() 方法关闭 StreamWriter 对象,并释放其所使用的所有资源,包括基础流(例如文件流)和缓冲区。
在调用 Close() 方法后,将无法再对该 StreamWriter 对象进行任何读写操作。
在使用完 StreamWriter 对象后,调用 Close() 方法可以确保所有资源被及时释放,以避免资源泄漏和内存泄漏。

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

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

相关文章

关于Canvas绘图和SVG绘图绘图的区别

当谈到Canvas绘图和SVG绘图时,它们是两种不同的绘图技术,各自具有不同的特点和应用场景。 区别: Canvas绘图:Canvas是HTML5中的一个元素,它提供了一个可以通过JavaScript进行绘图的区域。Canvas绘图是基于像素的&…

实景户外剧本杀小程序开发搭建

实景户外剧本杀小程序开发搭建需要以下步骤: 1. 确定需求和设计:首先需要明确实景户外剧本杀小程序的需求,包括场景、剧本、角色、玩法等方面的需求,并根据需求设计小程序的界面和功能。 2. 选择开发技术:根据需求选…

数据结构的概念大合集01(含数据结构的基本定义,算法及其描述)

概念大合集01 1、数据结构基础的定义2、数据结构2.1 数据元素之间关系的集合2.2数据结构的三要素2.2.1数据的逻辑结构2.2.2数据的存储(物理)结构2.2.3数据的运算 3、数据类型4、抽象数据类型类型(ADT)5、算法及其描述5.1算法的5个…

Qt文件以及文件夹相关类(QDir、QFile、QFileInfo)的使用

关于Qt相关文件读写操作以及文件夹的一些知识,之前也写过一些博客: Qt关于路径的处理(绝对路径、相对路径、路径拼接、工作目录、运行目录)_qt 相对路径-CSDN博客 C/Qt 读写文件_qt c 读取文本文件-CSDN博客 C/Qt读写ini文件_…

【C++】C++面向对象练习题

利用多态机制完成以下题目 现需要一个理财程序,其中包含四个类,分别为投资(Investment)、储蓄(Saving)、基金(Fund)和理财人(Person),储蓄和基金为两种具体投…

Docker学习之数据管理(超详解析)

Docker存储资源类型: 用户在使用 Docker 的过程中,势必需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至多个容器之间进行数据共享,这必然会涉及到容器的数据管理: (1&#xff…

(含代码)利用NVIDIA Triton加速Stable Diffusion XL推理速度

在 NVIDIA AI 推理平台上使用 Stable Diffusion XL 生成令人惊叹的图像 扩散模型正在改变跨行业的创意工作流程。 这些模型通过去噪扩散技术迭代地将随机噪声塑造成人工智能生成的艺术,从而基于简单的文本或图像输入生成令人惊叹的图像。 这可以应用于许多企业用例&…

【剑指offer--C/C++】JZ25 合并两个排序的链表

题目 思路 这个题目大逻辑比较简单,就是一个比较和穿插,但细节上要考虑清楚,可以画个图模拟一下。我这里是设置将两个链表拆开组成一个新的链表,这样不需要占用新的空间。两个指针对应节点的值进行比较,那个节点值较小…

GEE——如何在谷歌地球引擎中获取二进制概率的准确性?(含具体代码介绍)

如何在谷歌地球引擎中获取二进制概率的准确性? Receiver Operating Characteristic(ROC)简介 Receiver Operating Characteristic(ROC)曲线是一种描述分类模型性能的图形工具。在二元分类问题中,ROC曲线以假正例率(False Positive Rate, FPR)为横坐标,真正例率(Tru…

【Stable Diffusion】入门-03:图生图基本步骤+参数解读

目录 1 图生图原理2 基本步骤2.1 导入图片2.2 书写提示词2.3 参数调整 3 随机种子的含义4 拓展应用 1 图生图原理 当提示词不足以表达你的想法,或者你希望以一个更为简单清晰的方式传递一些要求的时候,可以给AI输入一张图片,此时图片和文字是…

QT表格初始化与数据库值插入(库存管理系统)

void MainWidget::TableWidgetListDataFunc() // tablewidget表格控件初始化操作 {// 编号 名称 数量 单价 供应商家 负责人 入库时间 出库时间 备注// 设置表格控件200行9列ui->tableWidget_ListData->setColumnCount(9);ui->tableWidget_ListData->setRowCount(2…

Android 11存储权限兼容

Android 11 外部存储权限适配指南及方案 - 简书 //https://www.jianshu.com/p/e94cea26e213<uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.MANAGE_EXTERNAL_STORA…

数据可视化学习:Matplotlib概述

一、图表的常用设置 1.基本绘图主要函数 (1).matplotlib.pyplot.plot(x,y,format_string,**kwargs) 2.参数说明 (1).x:x轴数据 (2).y:y轴数据 (3).format_string:控制曲线格式的字符串&#xff0c;包括颜色、线条样式和标记样式 (4)**kwargs:键值参数&#xff0c;相当于…

基础知识学习 -- qnx 系统

QNX是一个基于优先级抢占的系统。 这也导致其基本调度算法相对比较简单。因为不需要像别的通用操作系统考虑一些复杂的“公平性”&#xff0c;只需要保证“优先级最高的线程最优先得到 CPU”就可以了。 基本调度算法 调度算法&#xff0c;是基于优先级的。QNX的线程优先级&a…

VS调试快捷键

VS调试快捷键 4. VS调试快捷键4.1 环境准备4.2 调试快捷键调试最常使⽤的⼏个快捷键&#xff1a; 4. VS调试快捷键 那程序员怎么调试代码呢&#xff1f; 4.1 环境准备 首先是环境的准备&#xff0c;需要⼀个支持调试的开发环境&#xff0c;我们上课使用VS&#xff0c;应该把…

Magical Combat VFX

这个包包含30个可供游戏使用的VFX,有各种口味,为您的游戏增添趣味! 所有VFX都经过了很好的优化,可以在所有平台上使用。 这个包特别有一堆闪电魔法,有两种主要的变体,一种是深色的,另一种是浅色的。但它也提供了一系列其他视觉效果,如神圣咒语、音乐主题等等! 我们提供…

fetch,前端 面试题

Fetch Fetch API 是近年来被提及将要取代XHR的技术新标准&#xff0c;是一个 HTML5 的 API。 基于promise的设计&#xff0c;返回的是Promise对象 fetch()采用模块化设计&#xff0c;API 分散在多个对象上&#xff08;Response 对象、Request 对象、Headers 对象&#xff09;…

如何在webapp中于动发布一个应用

目录 第一步&#xff1a;在webapp文件夹内自定义文件夹第二步&#xff1a;生成一个文本&#xff0c;并把后缀改为 .html第三步&#xff1a;进入bin文件夹打开服务第四步&#xff1a;打开方式选择java第六步&#xff1a;输入你想输出的东西第七步&#xff1a;双击运行即可 第一步…

mybatis-plus笔记1

mybatis-plus笔记1 mybatis-plus快速入门基于Mapper接口的crud增强基于service的crud分页查询分页添加到自定义方法queryWrapper简单使用使用细节 updateWrapperlambdaWrapper mybatis-plus快速入门 pom.xml文件中导入相关依赖 application.yaml配置文件 MainApplication.java…

2024年企业经济管理与大数据国际会议(ICEEMBD 2024)

2024年企业经济管理与大数据国际会议&#xff08;ICEEMBD 2024&#xff09; 2024 International Conference on Enterprise Economic Management and Big Data 会议简介&#xff1a; 大数据分析在经济管理中发挥着至关重要的作用&#xff0c;它不仅能够提高决策效率和准确性…