StreamReader和StreamWriter说明

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表示将其全部重写。如果该文 件不存在,则此构造函数将创建一个新文件。

原文地址:https://www.cnblogs.com/huang34/p/9475938.html

时间: 2024-10-29 19:06:39

StreamReader和StreamWriter说明的相关文章

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

大文件拷贝: 1 /// <summary> 2 /// 大文件拷贝 3 /// </summary> 4 /// <param name="sSource"></param> 5 /// <param name="sTarget"></param> 6 private static void CopyFile(string sSource, string sTarget) 7 { 8 usin

FileStream、StreamReader、StreamWriter的使用及区别

FileStream可以操作任何文件. FileStream可以操作大型文件. StreamReader和StreamWriter只针对文本文件操作,文本文件操作起来比较简单. 1 private void button1_Click(object sender, EventArgs e) 2 { 3 //FileStream可以读写任何文件,SteamReader.SteamWriter只适合读写文本文件 4 5 using (FileStream fs = new FileStream("t

StreamReader 和 StreamWriter 简单调用

/* ######### ############ ############# ## ########### ### ###### ##### ### ####### #### ### ########## #### #### ########### #### #### ########### ##### ##### ### ######## ##### ##### ### ######## ###### ###### ### ########### ###### ###### #### ###

StreamReader和StreamWriter中文乱码问题

StreamReader和StreamWriter中文乱码问题 1.写入: string  FilePath = @"E:\Measure.csv"; StreamWriter writer=new StreamWriter(FilePath, true, System.Text.Encoding.UTF8); writer.WriteLine("项目名称,测试结果,测试值\n"); writer.Close(); 设置为Encoding.UTF8可以解决写入中文为

C#控制台基础 streamreader与streamwriter读取一个txt中的内容写到另外一个txt中

1 代码 1 using System; 2 using System.Collections.Generic; 3 using System.IO; 4 using System.Linq; 5 using System.Text; 6 using System.Threading.Tasks; 7 8 namespace ConsoleApplication4 9 { 10 class Program 11 { 12 static void Main(string[] args) 13 {

StreamReader和StreamWriter 读取 写入一个文本文档

////使用StreamReader来读取一个文本文件 //using (StreamReader sr = new StreamReader(@"C:\Users\Administrator\Desktop\sb.txt",Encoding.Default)) //{ // while(!sr.EndOfStream) // { // Console.WriteLine(sr.ReadLine()); // } //} //Console.ReadKey(); //使用StreamW

StreamReader与StreamWriter

StreamReader实现了抽象基类TextReader类,而StreamWriter实现了抽象基类TextWriter.分别用于对流的读取与写入. 先从StreamReader说起 一.构造方法 StreamReader(Stream) 为指定的流初始化 StreamReader 类的新实例. StreamReader(String) 为指定的文件名初始化 StreamReader 类的新实例. StreamReader(Stream, Boolean) 用指定的字节顺序标记检测选项,为指定

文件流StreamReader和StreamWriter的使用

using (StreamReader sr = new StreamReader(@"C:\Users\shuai\Desktop\文件流读取.txt", Encoding.Default)) { while (!sr.EndOfStream) { Console.WriteLine(sr.ReadLine()); } } Console.ReadLine(); using(StreamWriter sw=new StreamWriter(@"C:\Users\shuai\

FileStream读写文件【StreamWriter 和 StreamReader】

FileStream对象表示在磁盘或网络路径上指向文件的流.这个类提供了在文件中读写字节的方法,但经常使用StreamReader或StreamWriter执行这些功能.这是因为FileStream类操作的是字节和字节数组,而Stream类操作的是字符数据.字符数据易于使用,但是有些操作,比如随机文件访问(访问文件中间某点的数据),就必须由FileStream对象执行.其中创建FileStream对象最简单的构造函数如下: 1        FileStream file = new FileS