标签:编码 from string ascii false 文本 image 字符串 表示
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 sw = new StreamWriter(string path,bool append,Encoding encoding); StreamWriter sw = new StreamWriter(string path,bool append,Encoding encoding,int bufferSize);
//使用指定编码和缓冲区大小,为指定路径上的指定文件初始化 StreamWriter 类的新实例。true表示如果该文件存在,则可以向其追加。false表示将其全部重写。如果该文 件不存在,则此构造函数将创建一个新文件。
标签:编码 from string ascii false 文本 image 字符串 表示
原文地址:https://www.cnblogs.com/huang34/p/9475938.html