扩展阅读 http://www.57itsq.com/read.php?tid-935.html
System.IO 还为我们提供了BinaryReader 和BinaryWriter 类用于按二进制模式读
写文件它们提供的一些读写方法是对称的比如针对不同的数据结构BinaryReader
提供了ReadByte ReadBoolean ReadInt ReadInt16 ReadDouble ReadString 等方法
而BinaryWriterz 则提供了WriteByte WriteBoolean WriteInt WriteInt16 WriteDouble
WriteString 方法
下面我们举一个通讯录的例子来说明BinaryReader 和BinaryWriter 类是如何使用
的。
using System;
using System.IO;
struct Record{
public string name;
public UInt16 age;
public string phone;
public string address;
}; //通讯录的记录格式
class PhoneBook
{
FileStream f_srm;
string s_filename;
Record m_record;
public PhoneBook(string filename)
{
s_filename = filename;
}
public int Open()
{ //显示初始化界面
Console.WriteLine("1: List Record");
Console.WriteLine("2: Add New Record");
Console.WriteLine("3: Erase Record");
Console.WriteLine("0: Exit");
int i = Console.Read() - '0';
return i;
}
public void AddNew()
{ //向通讯录中添加记录
try{
f_srm = new FileStream(s_filename,FileMode.OpenOrCreate);
}
catch
{
Console.WriteLine("PhoneBookError!");
return;
}
BinaryWriter pw = new BinaryWriter(f_srm);
pw.Seek(0,SeekOrigin.End);
string s_temp;
Console.Write("Name:");
Console.ReadLine();
m_record.name = Console.ReadLine();
pw.WriteString(m_record.name);
reenter:
Console.Write("Age: ");
s_temp = Console.ReadLine();
try{
m_record.age = s_temp.ToUInt16();
}
catch
{
Console.WriteLine("The formatof age is error,please ReEnter");
goto reenter;
}
pw.Write(m_record.age);
Console.Write("PhoneNumber: ");
m_record.phone = Console.ReadLine();
pw.WriteString(m_record.phone);
Console.Write("Address:");
m_record.address = Console.ReadLine();
pw.WriteString(m_record.address);
f_srm.Close();
}
public void List()
{ //浏览所有记录
try{
f_srm = new FileStream(s_filename,FileMode.Open);
}
catch
{
Console.WriteLine("PhoneBookError!");
return;
。。。。。