首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 讀寫文件的方法(二)

     編輯:關於C語言

17.3.2 二進制模式讀寫

System.IO 提供 BinaryReader/BinaryWriter 進行二進制讀寫,方法對稱:

  • 讀:ReadByte, ReadBoolean, ReadInt32, ReadInt16, ReadDouble, ReadString
  • 寫:WriteByte, WriteBoolean, WriteInt32, WriteInt16, WriteDouble, WriteString

以通訊錄範例示範:

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() { /* 顯示選單 */ }
    public void AddNew() {
        try { f_srm = new FileStream(s_filename, FileMode.OpenOrCreate); }
        catch { Console.WriteLine("PhoneBook Error!"); return; }
        BinaryWriter pw = new BinaryWriter(f_srm);
        pw.Seek(0, SeekOrigin.End);
        // 讀取輸入並寫入各欄位...
        pw.WriteString(m_record.name);
        pw.Write(m_record.age);
        pw.WriteString(m_record.phone);
        pw.WriteString(m_record.address);
        f_srm.Close();
    }
    public void List() {
        try { f_srm = new FileStream(s_filename, FileMode.Open); }
        catch { Console.WriteLine("PhoneBook Error!"); return; }
        BinaryReader pr = new BinaryReader(f_srm);
        Console.WriteLine("Name Age Phone Number Address");
        while (true) {
            try {
                m_record.name = pr.ReadString();
                m_record.age = pr.ReadUInt16();
                m_record.phone = pr.ReadString();
                m_record.address = pr.ReadString();
            } catch { return; }
            Console.WriteLine("{0,-9}{1,-6}{2,-18}{3}", m_record.name, m_record.age, m_record.phone, m_record.address);
        }
        f_srm.Close();
    }
    public void Erase() { /* 清空檔案 */ }
}
class Test {
    public static void Main() {
        PhoneBook pbook = new PhoneBook("c:\\C#\\Phone.book");
        int i = pbook.Open();
        switch(i) { case 1: pbook.List(); break; case 2: pbook.AddNew(); break; case 3: pbook.Erase(); break; }
    }
}

格式化輸出 {0,-9} 表示左對齊佔 9 字元,正數為右對齊。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved