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对象进行读取时,就不能以具体类型大小来
操作流的位置了,而是以字符大小为单位操作流的位置的,读出来的也是一个字符串,而不是具体类型
主要是因为文件流对象在读写字节的效率是相当高的,但是在处理其他类型的数据时会比较麻烦,
所以就出现了二进制读写器和文本读写器来解决这一问题。
-----------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对象进行读取时,就不能以具体类型大小来
操作流的位置了,而是以字符大小为单位操作流的位置的,读出来的也是一个字符串,而不是具体类型
相关文章推荐
- 我是运营,我没有假期
- c#调用COM组件
- DB2数据库的安装
- c#中虚函数的相关使用方法
- “传奇”图象数据存储方式
- 修复mysql数据库
- 浅析C# web访问mysql数据库-整理归纳总结
- C# IP地址与整数之间转换的具体方法
- SQLServer 数据导入导出的几种方法小结
- MySQL数据备份之mysqldump的使用详解
- C#实现的阴历阳历互相转化类实例
- C# 的关键字详细介绍
- c# 获得局域网主机列表实例
- C#中Convert.ToInt32()和int.Parse()的区别介绍
- C#面向对象特征的具体实现及作用详解
- 关于C# Math 处理奇进偶不进的实现代码
- c# 随机函数的使用详解
- c#之圆形无标题栏椭圆窗体的实现详解
- C#页面之间跳转功能的小结
- 浅析C# 基础语法的使用