输入流用于从外部源读取数据。在很多情况下,数据源是磁盘上的文件或网络的某些位置。任何可以发送数据的位置都可以是数据源,比如网络应用程序、Web服务,甚至是控制台。

用来从文件中读取数据的类是StreamReader。同StreamWriter一样,这是一个通用类,可以用于任何流。

StreamReader对象的创建方式非常类似于StreamWriter对象。创建它的最常见方式是使用前面创建的FileStream对象:

FileStream fs = new FileStream("test.txt",FileMode.Open);
StreamReader sr = new StreamReader(fs);

同StreamWriter一样,StreamReader类可以直接在包含具体文件路径的字符串中创建:

StreamReader sr = new StreamReader("test.txt");

using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
class Program
{
static void Main(string[]args)
{
   try
   {
    FileStream aFile = new FileStream(@"c:\祝福.txt", FileMode.Open);
    StreamReader sr = new StreamReader(aFile);
    string strLine = sr.ReadLine();
    while(strLine != null)
    {
     Console.WriteLine(strLine);
     strLine = sr.ReadLine();
    }
    sr.Close();
   }
   catch (IOException ex)
   {
    Console.WriteLine(ex.Message);
    Console.ReadLine();
    return ;
   }
Console.ReadKey();

}
}

FileStream构造函数找不到该文件,就会抛出异常。

这个应用程序非常类似于前面的应用程序。其明显的区别就是,它是在读取数据,而不是写入数据。同前面一样,必须导入System.IO命名空间,才能访问需要的类。

使用ReadLine()方法从文件中读取文本。这个方法读取回车符之前的文本,并以字符串的形式返回结果文本。当到达文件尾时,该方法就返回空值,通过这种方法可以测试文件是否已到达了尾部。注意使用while循环时,在执行循环体的代码之前进行检查,确保读取的行不为空,这样就只显示文件的有效内容:

strLine = sr.ReadLine();
while(strLine != null)
{
   Console.WriteLine(strLine);
   strLine = sr.ReadLine();
}

ReadLine()方法不是在文件中访问数据的惟一方法。StreamReader类还有许多读取数据的方法。

读取数据最简单的方法是Read()。此方法将流的下一个字符作为正整数值返回,如果到达了流的结尾处,则返回–1。使用Convert实用类可以把这个值转换为字符。在上面的示例中,程序的主体可以按如下方式编写:

StreamReader sr = new StreamReader(aFile);
int nChar;
nChar = sr.Read();
while(nChar != -1)
{
   Console.Write(Convert.ToChar(nChar));
   nChar = sr.Read();
}
sr.Close();

对于小型文件,可以使用一个非常方便的方法,即ReadToEnd()方法。此方法读取整个文件,并将其作为字符串返回。在此,前面的应用程序可以简化为:

StreamReader sr = new StreamReader(aFile);
strLine = sr.ReadToEnd();
Console.WriteLine(strLine);
sr.Close();

这似乎非常容易和方便,但必须小心。将所有的数据读取到字符串对象中,会迫使文件中的数据放到内存中。应根据数据文件的大小禁止这样处理。如果数据文件非常大,最好将数据留在文件中,并使用StreamReader的方法访问文件。

转载于:https://www.cnblogs.com/tanding/archive/2012/07/02/2572691.html

C#使用StreamReader类读取文件文件相关推荐

  1. 在javaweb中通过servlet类和普通类读取资源文件

    javaweb有两种方式读取资源文件 在Servlet中读取,可以使用servletContext,servletContext可以拿到web所有的资源文件,然后随便读,但是这种方法不常用,尽量少在S ...

  2. php循环读取excel每个单元格,php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)...

    error_reporting(E_ALL); date_default_timezone_set('Asia/ShangHai'); include_once('Classes/PHPExcel/I ...

  3. C# 使用XmlDocument类读取XML文件

    经过3天的测试验证发现使用XmlDocument读取XML文件的各个节点的值很容易实现. 测试XML文件如下 products.xml: <Table> <Product> & ...

  4. php使用PHPexcel类读取excel文件(循环读取每个单元格的数据)

    error_reporting(E_ALL); date_default_timezone_set('Asia/ShangHai'); include_once('Classes/PHPExcel/I ...

  5. C#使用StreamReader类读取汉字

    我们上个例子中的代码: using System; using System.Collections.Generic; using System.Text; using System.IO; clas ...

  6. JAVA读取Properties文件对象常用方法总结

    实际开发中,总是会需要用到配置文件的,常用的就是properties.xml.json.比如,使用jdbc访问数据库时,我们就可以将driver.url.username.password这几个参数记 ...

  7. java读取csv文件_使用扫描仪读取Java中的CSV文件

    java读取csv文件 We can use Java Scanner Class to read CSV File in java. 我们可以使用Java扫描程序类在Java中读取CSV文件. 读取 ...

  8. multipartfile转excel_关于MultipartFile类接收EXCEL文件的问题

    现有的做法是用MultipartFile类读取excel文件以后用transferTo()转存到硬盘上,请问能不能不用转存到硬盘直接用File类读取,试过将其强制转换成File类型结果报错. 目前做法 ...

  9. StreamReader类

    StreamReader类用于从文件中读取数据,该类是一个通用类,可用于任何流,构造方法和StreamWrite类格式一样的. 创建方式有两种: 1.先创建Filestream类在创建StreamRe ...

最新文章

  1. 三篇ISME讨论‘1%的微生物可培养’
  2. Synchronized和Lock有什么区别
  3. python supervisor_python之supervisor进程管理工具
  4. 跟着感觉走,不要冲动入手,到真正低点在入手
  5. vc6 前进后退 番茄_比较圣女果与西红柿中的Vc含量解读
  6. MBSA有关安全漏洞的检查说明一
  7. Xamarin Android 应用程序内图标上数字提示
  8. Ubuntu系统下面软件安装更新命令
  9. Excel-图表与文本框/图片的组合
  10. 《编码:隐匿在计算机软硬件背后的语言》读书笔记整理总结
  11. 五日均线指标编程案例讲解
  12. html5新年网页做给父母的,2020给父母的新年祝福语
  13. 牧羊人和金斧子|不要和产品聊天!
  14. 高颜值蓝牙耳机有哪些?音质好颜值高的蓝牙耳机推荐
  15. 【转载】第三方支付业务如何测试
  16. 一个光棍的呐喊!-太经典了
  17. WebP图片格式处理和兼容使用
  18. Kali Linux 2020.1安装教程
  19. 大华摄像头实现web端实时播放以及录像回放
  20. 计算机与外设维修初级,计算机的外设维修实例论文.docx

热门文章

  1. 怎么p出模糊的照片_36. 盲去卷积 - 更加实用的图像去模糊方法
  2. springboot2整合mysql5_SpringBoot2.X (二十五):SpringBoot整合 Mybatis + MySQL CURD 示例
  3. java excil表格开发_JAVA导出Excel电子表格的方法
  4. ansys变形太夸张_航母上的一颗铆钉能换一辆奥迪?太奢侈了
  5. Hibernate使用原生SQL适应复杂数据查询
  6. 剑指offer:39-42记录
  7. redis——发布和订阅
  8. Elasticsearchan相关插件和工具安装
  9. centos安装nginx,配置负载均衡
  10. 再议指针和引用的一些事情吧