您的位置:首页 > 编程语言 > C#

C#中流的读写器BinaryReader、BinaryWriter,StreamReader、StreamWriter详解

2013-12-08 11:21 369 查看
问题一:为什么要出现与文件流配套的读写器类型呢?

主要是因为文件流对象在读写字节的效率是相当高的,但是在处理其他类型的数据时会比较麻烦,

所以就出现了二进制读写器和文本读写器来解决这一问题。

-----------YYC

FileStream fsl = File.Open("E:\\a.txt",FileMode.Open,FileAccess.ReadWrite);

BinaryWriter,BinaryReader都是以二进制的方式来操作流的,所以都是基于(Stream Output,Stream Input)流的对象来创建读写器对象

其中流的移动是一字节为单位的

BinaryWriter bw = new BinaryWriter(fsl);

bw.Write(101);

bw.Write(3.14);

bw.Write("aaa");

bw.Flush();//清空系统缓存区,使缓存区的数据全部写入物理文件中

bw.Write(new char[] {'A','B','C','D'});

bw.Write(DateTime.Now.ToString());

bw.Close();

fsl.Close();

fsl = File.Open("E:\\a.txt",FileMode.Open,FileAccess.ReadWrite);

BinaryReader br = new BinaryReader(fsl);

int a = br.ReadInt32();

double b = br.ReadDouble();

/*注意此处a,b读取的顺序不能乱

*否则会出现乱码

*/

br.Close();

fsl.Close();

MessageBox.Show(a.ToString()+" "+b.ToString());

文本读写器StreamReader、StreamWriter是以文本流方式来对流进行读写操作

所以也需要利用流对象来创建读写器对象*/

FileStream fsl = File.Open("E:\\a.txt",FileMode.Open,FileAccess.ReadWrite);

StreamWriter sw = new StreamWriter(fsl);

sw.Write(22);

sw.Write(1.111);

sw.Write("qqq");

sw.WriteLine("aaaa");

sw.Close();

fsl.Close();

fsl = File.Open("E:\\a.txt", FileMode.Open, FileAccess.ReadWrite);

StreamReader sr = new StreamReader(fsl);

string a = sr.ReadToEnd();

MessageBox.Show(a);

文本读写器和二进制读写器的关系

首先两者都是基于流来操作文件进行读写的,但前者是以二进制的方式来进行的,前者写入文件后双击打开会是乱码,读写都要更具

具体的数据类型来操作流的位置。后者则是以文本方式来操作文件的读写的,文本读写器中写入时更具具体数据类型来操作流的位置,

但写入具体文件中的却是字符串的文本格式,双击打开该文件是可以阅读的,同时在运用StreamReader对象进行读取时,就不能以具体类型大小来

操作流的位置了,而是以字符大小为单位操作流的位置的,读出来的也是一个字符串,而不是具体类型
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息