StreamReader/StreamWriter操作的是字符数据(char),而FileStream操作的是字节数据(byte)

FileStream与StreamXXXX类的默认编码都是UTF8,而一个中文字符占2个字符,所以StreamXXXX类常用于文本的打开与保存,而FileStream则用于数据的传输。

StreamReader sw = new StreamReader(Stream stream);
StreamReader sw = new StreamReader(string path);

//为指定的流/文件名初始化 StreamReader 类的新实例,并且使用默认的编码(UTF-8)读取文件

StreamReader sw = new StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks);
StreamReader sw = new StreamReader(string path, bool detectEncodingFromByteOrderMarks);

//用指定的字节顺序(BOM)标记检测选项,为指定的流/文件名初始化 StreamReader 类的一个新实例

StreamReader sw = new StreamReader(Stream stream, Encoding encoding);
StreamReader sw = new StreamReader(string path, Encoding encoding);

//用指定的字符编码为指定的流/文件名初始化 StreamReader 类的一个新实例,因为有些编码(如GB2312、UTF7)就没有BOM,就认不到编码,就需要手动指定一个编码。

StreamReader sw = new StreamReader(Stream stream, Encoding encoding, bool detectEncodingFromByteOrderMarks);
StreamReader sw = new StreamReader(string path, Encoding encoding, bool detectEncodingFromByteOrderMarks);

//为指定的流/文件名初始化 StreamReader 类的新实例,带有指定的字符编码和字节顺序标记检测选项。

StreamReader sw = new StreamReader(Stream stream, bool detectEncodingFromByteOrderMarks, int bufferSize);
StreamReader sw = new StreamReader(string path, bool detectEncodingFromByteOrderMarks, int bufferSize);

//为指定的流/文件名初始化 StreamReader 类的新实例,带有指定的字符编码、字节顺序标记检测选项和缓冲区大小。

1:public override int Read(); //读取输入流中的下一个字符并使该字符的位置提升一个字符,返回的是十进制字符

StreamReader sr = new StreamReader(@"d:/source.txt", Encoding.UTF8);
int Ichar = 0;
//不再有可用的字符,则为 -1 例如读取其中一个字符十进制是29992 则转为ASCII字符是“用”
while ((Ichar = sr.Read()) != -1)
{
Console.WriteLine(Ichar+"="+Convert.ToChar(Ichar).ToString());//将int类型转成ASCII字符  
}

 结果如下

2:public override int Read(char[] buffer, int index, int count);  //Read(字节数组,数组使用的开始位置,读取字节的个数)

buffer是空存储间,先把从index开始位置读取count个的十进制字符复制到buffer,然后再读取剩余的字符

StreamReader sr = new StreamReader(@"d:/source.txt", Encoding.UTF8);
char[] buffer = new char[512];
int readCount = sr.Read(buffer, 0, 512);
for (int i = 0; i < readCount; i++)
{
Console.WriteLine(i+"="+buffer[i].ToString());
}

3:public override string ReadLine()  //行读入,返回值是字符串

StreamReader sr = new StreamReader(@"d:/source.txt", Encoding.UTF8);
string strLine = null;
while ((strLine = sr.ReadLine()) != null)
{
Console.WriteLine(strLine);
}

4:public override string ReadToEnd() //从开始位置读取到末尾

5:public override int Peek() //读取下一个字符

6:EndOfStream  // 获取一个值,该值表示当前的流位置是否在流的末尾

7:CurrentEncoding // 获取当前 StreamReader 对象正在使用的当前字符编码

StreamWriter sw = new StreamWriter(Stream stream);
StreamWriter sw = new StreamWriter(string path);
StreamWriter sw = new StreamWriter(Stream stream,Encoding encoding);
StreamWriter sw = new StreamWriter(Stream stream,Encoding encoding,int bufferSize);

//用指定的编码及缓冲区大小,为指定的流初始化 StreamWriter 类的新实例。int为缓冲区大小

StreamWriter sw = new StreamWriter(string path,bool append,Encoding encoding);
StreamWriter sw = new StreamWriter(string path,bool append,Encoding encoding,int bufferSize);

//使用指定编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。true表示如果该文件存在,则可以向其追加。false表示将其全部重写。如果该文 件不存在,则此构造函数将创建一个新文件。

StreamReader和StreamWriter说明的更多相关文章

  1. C#对文件/目录的操作:Path、File、Directory、FileStream、StreamReader、StreamWriter等类的浅析

    以下类的命名空间都是:System.I/0; 一.Path:主要对文件路径的操作! 常用方法: String path=@"C:\a\b\c\123.txt"; 1-1.Path. ...

  2. 文件流操作(FileStream,StreamReader,StreamWriter)

    大文件拷贝: /// <summary> /// 大文件拷贝 /// </summary> /// <param name="sSource"> ...

  3. StreamReader 和 StreamWriter 简单调用

    /* ######### ############ ############# ## ########### ### ###### ##### ### ####### #### ### ####### ...

  4. C#基础学习之StreamReader和StreamWriter

    StreamReader和StreamWriter操作字符的 FileStream操作字节的 //使用StreamReader读取文件 using (StreamReader sr=new Strea ...

  5. StreamReader和StreamWriter中文乱码问题

    StreamReader和StreamWriter中文乱码问题 1.写入: string  FilePath = @"E:\Measure.csv"; StreamWriter w ...

  6. File FileStream StreamReader和StreamWriter

    File 静态类 ReadAllBytes 和 WriteAllBytes ,用于一次性全部读取和写入小文件的字节码,                  ReadLine  ReadkAll  用于一 ...

  7. C#--几个数据流Stream;StreamReader;StreamWriter;MemoryStream;BufferStream;

    命名空间:System.IO; Stream: 各种流的基类,不能时行查找操作,Position属性不能修改.读取时不Position不会自动移动, HttpWebRequest webreq = ( ...

  8. 文件流StreamReader和StreamWriter的使用

    using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.De ...

  9. 使用StreamReader与StreamWriter进行文本文件读写

    namespace filetest { class FileUtil { public static void WriteFile(string file) { using (FileStream ...

  10. StreamReader与StreamWriter

    StreamReader实现了抽象基类TextReader类,而StreamWriter实现了抽象基类TextWriter.分别用于对流的读取与写入. 先从StreamReader说起 一.构造方法 ...

随机推荐

  1. 19.2 MEMORY CONTROLLER

    在存储控制器的BANKCONTROLREGISTER(BANKCONn: GCS6-nGCS7)表中:中文翻译各个寄存器的位出现错误: 原文中正确的表述见下图:

  2. 关于使用colorbox加载html页面的一些问题

    ColorBox是一个基于jQuery 1.3 的轻量级,自定义灯箱插件,功能非常强大,支持图片,图片组,ajax,inline和iframed内容,灯箱样式完全由用户控制,可自定义CSS样 式,不需 ...

  3. Tcl 编译成tbc文件

    工具:tclpro1.4 下载地址:https://www.tcl.tk/software/tclpro/eval/1.4.html 永久license:  Version 1.4: 1094-320 ...

  4. 跨域1-CORS跨域

    1.跨域:请求的资源和当前网站的,协议/域名/端口 不一样,会发起跨域HTTP请求 2.为什么会跨域出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求. 例如,XMLHttpRequest和Fet ...

  5. Group(), Groups(),& Groupdict() 用法

    group() 返回一个或多个匹配的字串.如果只有一个参数,结果只有单个字符串:如果有多个参数,结果是一个元组,元组里每一项对应一个参数.没有参数,group1默认是0(整个匹配串被返回).如果gro ...

  6. redis 中的key值过期后,触发通知事件

    1.创建springboot工程,创建监听类 maven配置 <dependencies> <dependency> <groupId>org.springfram ...

  7. C/C++中的函数指针的使用与总结

    概要: 函数指针介绍 typedef简化函数指针的定义 指向函数的指针的初始化和赋值 通过指针调用函数 函数指针形参 返回指向函数的指针 指向重载函数的指针 参考<C++ Primer> ...

  8. mysql5.7基于gtid的主从复制

    两个节点:mkdir -p /data/mysql-5721/datamkdir -p /data/mysql-5721/innodbmkdir -p /data/mysql-5721/replica ...

  9. Layout-3相关代码:3列布局代码演化[二]

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  10. mvcmovie sample 在window10 下的部署问题(HTTP Error 500.19 - Internal Server Error)

    mvcmovie sample 在window10 下的部署问题 使用VS2018配置好了mvcmovie sample,发布到IIS后,打开报错: HTTP Error 500.19 - Inter ...