位置:首頁 > 高級語言 > C#教學 > C#讀取和寫入二進製文件

C#讀取和寫入二進製文件

所述BinaryReader和BinaryWriter類用於讀取和寫入二進製文件。

BinaryReader 類

BinaryReader類用於從文件中讀取的二進製數據。 BinaryReader在一個對象被傳遞FileStream對象到它的構造函數創建。

下表顯示了一些BinaryReader類的常用方法。

S.N 方法名稱及用途
1 public override void Close()
關閉BinaryReader對象和基礎流
2 public virtual int Read()
讀取字符從基礎流和前進流的當前位置
3 public virtual bool ReadBoolean()
讀取布爾值從當前流並通過一個字節前進流的當前位置
4 public virtual byte ReadByte()
讀下一個字節從當前的流中並且由一個字節前進流的當前位置
5 public virtual byte[] ReadBytes( int count ) 
讀取指定的字節數從當前流成字節數組和前進通過該字節數的當前位置
6 public virtual char ReadChar()
讀下一個字符從當前流中並進入在根據所使用的編碼和所述特定字符的流的當前位置
7 public virtual char[] ReadChars( int count )
讀取指定的字符數從當前的流,返回一個字符數組的數據,並前進從流讀取根據所使用的編碼和特定字符的當前位置
8 public virtual double ReadDouble()
讀取8字節的浮點值從當前的流中,並通過8個字節前進流的當前位置
9 public virtual int ReadInt32()
讀取4字節符號整數從當前流並通過四個字節前進流的當前位置
10 public virtual string ReadString() 
讀取字符串從當前流。該字符串的前綴長度,編碼為一個整數七比特

BinaryWriter 類

BinaryWriter類用於寫入二進製數據流。BinaryWriter對象通過傳遞FileStream對象到它的構造函數創建。

下表顯示了一些BinaryWriter類的常用方法。

S.N 函數名稱和說明
1 public override void Close()
關閉BinaryWriter對象和基礎流
2 public virtual void Flush()
清除所有緩衝區當前writer,並使所有緩衝的數據寫入到基礎設備
3 public virtual long Seek( int offset, SeekOrigin origin ) 
設置當前流中的位置
4 public virtual void Write( bool value ) 
寫入一個字節的布爾值,當前流,其中0表示假(false),1表示真(true)
5 public virtual void Write( byte value ) 
將寫入一個無符號字節到當前流,並通過一個字節流位置前移
6 public virtual void Write( byte[] buffer ) 
寫一個字節數組到底層流
7 public virtual void Write( char ch ) 
寫入Unicode字符到當前流並前進中根據所使用的編碼和特定的字符流被寫入到該流中的當前位置
8 public virtual void Write( char[] chars ) 
寫入字符數組到當前流並前進按照所使用的編碼和特定的字符流被寫入到該流中的當前位置
9 public virtual void Write( double value ) 
寫入一個八字節浮點值,以當前流和墊款的八個字節流中的位置
10 public virtual void Write( int value ) 
寫入一個四字節有符號整數當前流和墊款由四個字節流中的位置
11 public virtual void Write( string value ) 
寫入一個長度為前綴字符串到此流中BinaryWriter的當前編碼,並前進按照所用的編碼和特定的字符流被寫入到該流中的當前位置

對於方法的完整列表,請訪問微軟的C#文檔。

例子

下麵的例子演示了讀取和寫入二進製數據:

using System;
using System.IO;

namespace BinaryFileApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            BinaryWriter bw;
            BinaryReader br;
            int i = 25;
            double d = 3.14157;
            bool b = true;
            string s = "I am happy";
            //create the file
            try
            {
                bw = new BinaryWriter(new FileStream("mydata",
				FileMode.Create));
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "
 Cannot create file.");
                return;
            }
            //writing into the file
            try
            {
                bw.Write(i);
                bw.Write(d);
                bw.Write(b);
                bw.Write(s);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "
 Cannot write to file.");
                return;
            }

            bw.Close();
            //reading from the file
            try
            {
                br = new BinaryReader(new FileStream("mydata",
				FileMode.Open));
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "
 Cannot open file.");
                return;
            }
            try
            {
                i = br.ReadInt32();
                Console.WriteLine("Integer data: {0}", i);
                d = br.ReadDouble();
                Console.WriteLine("Double data: {0}", d);
                b = br.ReadBoolean();
                Console.WriteLine("Boolean data: {0}", b);
                s = br.ReadString();
                Console.WriteLine("String data: {0}", s);
            }
            catch (IOException e)
            {
                Console.WriteLine(e.Message + "
 Cannot read from file.");
                return;
            }
            br.Close();
            Console.ReadKey();
        }
    }
}

讓我們編譯和運行上麵的程序,這將產生以下結果:

Integer data: 25
Double data: 3.14157
Boolean data: True
String data: I am happy