本文是C#初学者简单教程,这是第20篇。感谢观看,记得关注我,后续还有更多教程文章,谢谢。

本文环境为Visual Studio 2019。

一、介绍

在C#文件操作中,通常使用流来读取和写入文件。流是在应用程序和文件之间创建的层。流Stream用于确保对文件的流畅读写操作。

从大文件读取数据时通常使用流。通过使用流,大型文件中的数据被分解成小块,然后发送到流中,然后可以从应用程序中读取这些数据块。

将其分解成小块的原因是因为一次读取大文件会对性能产生影响。如果一次性读取一个100 MB的文件中的数据,则应用程序可能会挂起并变得不稳定。最好的方法是使用流将文件分解为可管理的块。

因此,当对文件执行写操作时,首先将要写入的数据写入流中。然后,从流中将数据写入文件。读取操作也是如此。在读取操作中,数据首先从文件传输到流。然后通过流从应用程序读取数据。

二、StreamReader

StreamReader用于从文件读取数据。来自文件的数据首先被读入流中。之后,应用程序从流中读取数据。

对于我们的示例,我们假定D盘有一个名为“买菜清单.txt”的文件。该文件将是一个简单的文本文件,并具有两行,如下所示

  • 罗非鱼-8元/1.5斤
  • 大白菜-2.3元/1.2斤

下面我们将创建一个简单的控制台应用程序并使用文件流StreamReader,说明如何使用流从文件中读取数据。

在program.cs文件中输入以下代码:

static void Main(string[] args){    String path = @"D:买菜清单.txt";    using (StreamReader sr = File.OpenText(path))    {        String s = "";        while ((s = sr.ReadLine()) != null)        {            Console.WriteLine(s);        }    }}

代码说明:

  1. 首先,我们声明一个流读取器对象。StreamReader对象在C#中用于定义从文件到应用程序的流。每当从文件中读取数据时,数据就会从文件中推送到流中。File.OpenText用于以只读模式打开文件“ 买菜清单.txt”。然后将文件的处理程序发送到流读取器对象。
  2. 接下来,我们定义一个临时变量“s”,该变量将用于读取文件中的所有数据。
  3. 然后,我们使用流读取器方法ReadLine从流缓冲区读取每一行。当我们执行此操作时,每行将首先从文件传输到缓冲区。然后,字符串行将从缓冲区传输到变量“s”。然后,我们将字符串“s”的内容写入控制台。

如果您编写上面的代码,并使用Visual Studio 2019运行该项目时,您将获得以下输出:

三、StreamWriter

StreamWriter用于将数据写入文件。来自应用程序的数据首先被写入流中,之后,流将数据写入文件。

让我们看一个例子,说明如何使用流从文件写入数据。在program.cs文件中输入以下代码。

static void Main(string[] args){    String path = @"D:买菜清单.txt";    using (StreamWriter sr = File.AppendText(path))    {        sr.WriteLine("");        sr.WriteLine("金针菇-3.6元/1.6斤");        sr.Close();        Console.WriteLine(File.ReadAllText(path));    }}

代码说明:

  1. 首先,我们声明一个StreamWriter对象,StreamWriter对象在C#中用于定义写入流,然后使用该流将数据从应用程序写入文件。每当需要写入数据时,数据就会从应用程序推送到流中。File.AppendText命令用于在追加模式下打开文件“ 买菜清单.txt”,然后将文件的处理程序发送到流编写器(StreamWriter)对象。
  2. 我们使用流写入方法WriteLine将“金针菇-3.6元/1.6斤”写入文件。
  3. 然后,我们在写入文件后关闭流写入器。通常,当不再需要出于编写目的而使用文件时,关闭文件处理程序是一个好习惯。这里提下,凡是带有Close()的说明它一般都是非托管资源,如果您不主动释放,那么该对象的内存就还在,如果一个对象是这样子,随着你越来越多次的调用,并且都不释放,内存就会升高。这就叫“内存泄漏”。
  4. 最后,我们再次读取文件的内容并将其写入控制台日志。这是检查行是否已写入文件。

如果您编写上面的代码,并使用Visual Studio 2019运行该项目时,您将获得以下输出:

祝您用餐愉快。

idea 文件流读取web-inf下的文件_C#初学者教程系列20:Stream流读写相关推荐

  1. c#读取solidworks文件_C#初学者教程系列20:Stream流读写

    本文是C#初学者简单教程,这是第20篇.感谢观看,记得关注我,后续还有更多教程文章,谢谢. 本文环境为Visual Studio 2019. 一.介绍 在C#文件操作中,通常使用流来读取和写入文件.流 ...

  2. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  3. 安卓读取mysql数据库文件路径_Android开发实现读取assets目录下db文件的方法示例...

    本文实例讲述了Android开发实现读取assets目录下db文件的方法.分享给大家供大家参考,具体如下: 最近准备打算写一个关于天气预报的app,偶然的机会在一大神的博客上看到了一个获取天气的api ...

  4. 安卓上为什么不能用system.io.file读取streammingAssets目录下的文件

    安卓上为什么不能用system.io.file读取streammingAssets目录下的文件 首先,看文档: Streaming Assets Most assets in Unity are co ...

  5. CMD命令读取某个目录下所有文件夹名或文件名

    CMD命令读取某个目录下所有文件夹名或文件名 CMD命令读取某个目录下所有文件夹名或文件名 要用到的dir命令 开始操作 CMD命令读取某个目录下所有文件夹名或文件名 目的是给自己留个笔记! 要用到的 ...

  6. 在不root手机的情况下读取Data目录下的文件

    127|shell@android:/ $ cd /data cd /data shell@android:/data $ ls ls opendir failed, Permission denie ...

  7. 忙里偷闲写的小例子---读取android根目录下的文件或文件夹

    From:http://www.cnblogs.com/wenjiang/p/3140055.html 最近几天真的是各种意义上的忙,忙着考试,还要忙着课程设计,手上又有外包的项目,另一边学校的项目还 ...

  8. linux怎么在目录下查找文件,linux find-在指定目录下查找文件

    find命令用来在指定目录下查找文件.任何位于参数之前的字符串都将被视为欲查找的目录名.如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件.并且将查找到的子目录和文件全部进 ...

  9. java读取系统中指定的文件_java读取jar中指定的文件

    Java 档案 (Java Archive, JAR) 文件是基于 Java 技术的打包方案.它们允许开发人员把所有相关的内容 (.class.图片.声音和支持文件等) 打包到一个单一的文件中.JAR ...

最新文章

  1. 腾讯130公顷的深圳新总部了解一下,大小相当于曼哈顿城
  2. Java 创建用户异常类、将异常一直向上抛、 throw和throws的区别
  3. 【Luogu】P3356火星探险问题(费用流)
  4. bat tomcat程序在后台执行_Web中间件漏洞之Tomcat篇
  5. 解题报告 『[NOI2014]起床困难综合症』
  6. [BUUCTF-pwn]——ciscn_2019_es_2(内涵peak小知识)
  7. 名品折扣,谁与争锋!
  8. LDD3中snull网络驱动程序的使用
  9. PAFF 和MBAFF
  10. 写最少的代码,避免给自己找麻烦
  11. ThreadLocal系列(二)-InheritableThreadLocal的使用及原理解析
  12. 从C语言中的指针看C#中委托
  13. Python热门开源项目TOP10
  14. Android----Intent详解
  15. ROS 教程——从入门到入土
  16. SpreadJS 15.2.3 黄金十月美好版
  17. 机器学习开篇之机器学习的分类
  18. 创意、实现和合作:一次原创H5的尝试
  19. 微信营销分析之最有效的微信推广技巧
  20. List和IList的区别

热门文章

  1. Linux基础命令---e2fsck
  2. 到底会改名吗?微软GVFS 改名之争
  3. 用Python做地图投影 - 多面孔的世界
  4. 前端知识点(持续更新)
  5. 手把手教你简单接入微信SDK
  6. 超全超实用的Javascript类库和jQuery插件大全之一:图片,地图和图形
  7. python模块之pickle
  8. 贝叶斯定理的实际应用
  9. 系统异常和不稳定的原因总结
  10. WCF第一个Demo