操作流对象

不管是MemoryStream还是FileStream,都是以字节为读写数据的基本单位。而许多情况下应用程序都是以字符(占两个字节)、数字(比如int,占4个字节)、String(若干字符的集合)来处理数据的。因此.NET提供了BinaryReader和BinaryWriter、StreamReader和StreamWriter来解决这个问题。

1. BinaryReader和BinaryWriter:
这两个类主要用于向流中读取和写入各种基本数据类型的数据。
以下代码创建文件并写入一些数据:
private void BinaryWriteToFile()
        
{
            
//创建一个文件流对象
            FileStream fs = new FileStream("test2.data",FileMode.Create);
            
//将文件流对象作为参数构造一个BinaryWriter对象
            BinaryWriter bw = new BinaryWriter(fs);
            
//写入int
            bw.Write(100);
            
//写入字符'A'
            bw.Write('A');
            
//写入double
            double d = 200.99;
            bw.Write(d);
            
//写入bool
            bw.Write(true);
            
//关闭自身(隐含关闭它关联的FileStream)
            bw.Close();
        }
BinaryWriter对象不能独立存在,它必须依托FileStream或MemoryStream对象。
以下代码按原先写入的顺序读取数据:
private void BinaryReadFormFile()
        
{
            
//创建一个文件流对象
            FileStream fs = new FileStream("test2.data",FileMode.Open);    
            
//将文件流对象作为参数构造一个BinaryReader对象
            BinaryReader br = new BinaryReader(fs);
            
//读入int
            MessageBox.Show(br.ReadInt32().ToString());
            
//读入字符
            MessageBox.Show(br.ReadChar().ToString());
            
//读入double
            MessageBox.Show(br.ReadDouble().ToString());
            
//读入bool
            MessageBox.Show(br.ReadBoolean().ToString());
            
//关闭自身(隐含关闭它关联的FileStream)
            br.Close();
        }
2. StreamReader和StreamWriter:
BinaryWriter只能把字符和字符数组写入流中,却没有提供写入字符串的方法,这个功能由StreamWriter类实现。
以下代码创建一个StringData.txt,并向其中写入两个字符串:
private void WriteStringToFile()
        
{
            FileStream fs 
= new FileStream("StringData.txt",FileMode.Create);
            StreamWriter sw 
= new StreamWriter(fs);
            sw.WriteLine(
"合肥工业大学");
            sw.WriteLine(
"电子商务研究所");
            sw.Close();
        }

以下代码是从文件中分两次读取数据:
private void ReadStringFromFile()
        
{
            FileStream fs 
= new FileStream("StringData.txt",FileMode.Open);
            StreamReader sr 
= new StreamReader(fs);
            MessageBox.Show(sr.ReadLine());
            MessageBox.Show(sr.ReadLine());
            sr.Close();
        }
还可以用ReadToEnd方法,可以一次性地从当前读写指针所指的位置开始读到文件结尾。
private void ReadAllStringFromFile()
        
{
            FileStream fs 
= new FileStream("StringData.txt",FileMode.Open);
            StreamReader sr 
= new StreamReader(fs);
            MessageBox.Show(sr.ReadToEnd());
            sr.Close();
        }
posted on 2006-07-24 15:51  莫相会  阅读(686)  评论(5编辑  收藏  举报