C#按二进制模式读写文件

扩展阅读 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;

。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值