主要是因为文件流对象在读写字节的效率是相当高的,但是在处理其他类型的数据时会比较麻烦,
所以就出现了二进制读写器和文本读写器来解决这一问题。
-----------YYC
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对象进行读取时,就不能以具体类型大小来
操作流的位置了,而是以字符大小为单位操作流的位置的,读出来的也是一个字符串,而不是具体类型