亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C# BinaryReader實現讀取二進制文件

 更新時間:2021年06月01日 10:57:59   投稿:zx  
在 C# 以二進制形式讀取數據時使用的是 BinaryReader 類。本文介紹了C# BinaryReader實現讀取二進制文件,感興趣的可以了解一下

在 C# 以二進制形式讀取數據時使用的是 BinaryReader 類。

BinaryReader 類中提供的構造方法有 3 種,具體的語法形式如下。

第1種形式:

BinaryReader(Stream input)   //其中,input 參數是輸入流。

第2種形式:

BinaryReader(Stream input, Encoding encoding)   //其中,input 是指輸入流,encoding 是指編碼方式。

第3種形式:

BinaryReader(Stream input, Encoding encoding, bool leaveOpen)  
//其中,input 是指輸入流,encoding 是指編碼方式,leaveOpen 是指在流讀取后是否包括流的打開狀態(tài)。

下面分別使用不同的構造方法創(chuàng)建 BinaryReader 類的實例,代碼如下。

//創(chuàng)建文件流的實例
FileStream fileStream = new FileStream("D:\\code\\test.txt", FileMode.Open);
BinaryReader binaryReader1 = new BinaryReader(fileStream);
BinaryReader binaryReader2 = new BinaryReader(fileStream, Encoding.UTF8);
BinaryReader binaryReader3 = new BinaryReader(fileStream, Encoding.UTF8, true);

在完成 BinaryReader 類的實例的創(chuàng)建后,即可完成對文件以二進制形式的讀取。

BinaryReader 類中的常用屬性和方法如下表所示。

屬性或方法 作用
int Read() 從指定的流中讀取字符
int Read(byte[] buffer, int index, int count) 以 index 為字節(jié)數組中的起始點,從流中讀取 count 個字節(jié)
int Read(char[] buffer, int index, int count) 以 index 為字符數組的起始點,從流中讀取 count 個字符
bool ReadBoolean() 從當前流中讀取 Boolean 值,并使該流的當前位置提升 1 個字節(jié)
byte ReadByte() 從當前流中讀取下一個字節(jié),并使流的當前位置提升 1 個字節(jié)
byte[] ReadBytes(int count) 從當前流中讀取指定的字節(jié)數寫入字節(jié)數組中,并將當前 位置前移相應的字節(jié)數
char ReadChar() 從當前流中讀取下一個字符,并根據所使用的 Encoding 和從流中讀取的特定字符提升流的當前位置
char[] ReadChars(int count) 從當前流中讀取指定的字符數,并以字符數組的形式返回 數據,然后根據所使用的 Encoding 和從流中讀取的特定字符將當前位置前移
decimal ReadDecimal() 從當前流中讀取十進制數值,并將該流的當前位置提升 16 個字節(jié)
double ReadDouble() 從當前流中讀取 8 字節(jié)浮點值,并使流的當前位置提升 8 個字節(jié)
short ReadInt16() 從當前流中讀取 2 字節(jié)有符號整數,并使流的當前位置提升 2 個字節(jié)
int ReadInt32() 從當前流中讀取 4 字節(jié)有符號整數,并使流的當前位置提升 4 個字節(jié)
long ReadInt64() 從當前流中讀取 8 字節(jié)有符號整數,并使流的當前位置提升 8 個字節(jié)
sbyte ReadSByte() 從該流中讀取 1 個有符號字節(jié),并使流的當前位置提升 1 個字節(jié)
float ReadSingle() 從當前流中讀取 4 字節(jié)浮點值,并使流的當前位置提升 4 個字節(jié)
string ReadString() 從當前流中讀取一個字符串。字符串有長度前綴,一次 7 位地被編碼為整數
ushort ReadUInt16() 從該流中讀取的 2 字節(jié)無符號整數
uint ReadUInt32() 從該流中讀取的 4 字節(jié)無符號整數
ulong ReadUInt64()  從該流中讀取的 8 字節(jié)無符號整數
void FillBuffer(int numBytes) 用從流中讀取的指定字節(jié)數填充內部緩沖區(qū)

在 BinaryReader 類中提供的方法并不是直接讀取文件中指定數據類型的值,而是讀取由 BinaryWriter 類寫入到文件中的。

在上述方法中只有 Read 方法不要求讀取的值必須由 BinaryWriter 類寫入到文件中。

下面通過實例來演示 BinaryReader 類中 Read 方法的使用。

【實例 1】使用 BinaryReader 類讀取記事本文件中的信息。

根據題目要求,在 D:\code 目錄下創(chuàng)建一個記事本文件,并在其中輸入 abc,使用 BinaryReader 類讀取文件中的內容,代碼如下。

class Program
{
    static void Main(string[] args)
    {
        FileStream fileStream = new FileStream(@"D:\\code\\test.txt", FileMode.Open);
        BinaryReader binaryReader = new BinaryReader(fileStream);
        //讀取文件的一個字符
        int a = binaryReader.Read();
        //判斷文件中是否含有字符,若不含字符,a 的值為 -1
        while(a!= -1)
        {
            //輸出讀取到的字符
            Console.Write((char)a);
            a = binaryReader.Read();
        }
    }
}

執(zhí)行上面的代碼,效果如下圖所示。

除了使用 Read 方法每次讀取一個字符以外,也可以使用 Read 方法的其他重載方法將字符讀取到一個字節(jié)數組或字符數組中。

【實例 2】將 test.txt 記事本中的內容讀取到字節(jié)數組中。

根據題目要求,代碼如下。

class Program
{
    static void Main(string[] args)
    {
        FileStream fileStream = new FileStream(@"D:\\code\\test.txt", FileMode.Open,FileAccess.Read);
        BinaryReader binaryReader = new BinaryReader(fileStream);
        //獲取文件長度
        long length = fileStream.Length;
        byte[] bytes = new byte[length];
        //讀取文件中的內容并保存到字節(jié)數組中
        binaryReader.Read(bytes, 0, bytes.Length);
        //將字節(jié)數組轉換為字符串
        string str = Encoding.Default.GetString(bytes);
        Console.WriteLine(str);
    }
}

執(zhí)行上面的代碼,效果與實例 1 中一致。同樣,在讀取文件中的內容時也可以將內容存放到字符類型的數組中。

到此這篇關于C# BinaryReader實現讀取二進制文件的文章就介紹到這了,更多相關C# BinaryReader讀取二進制內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • C#中常用的運算符總結

    C#中常用的運算符總結

    在本篇文章里小編給大家分享了關于C#中常用的運算符的知識點總結,需要的朋友們跟著學習下。
    2019-03-03
  • .NET連接MongoDB數據庫實例教程

    .NET連接MongoDB數據庫實例教程

    這則小竅門將講述如何開發(fā)一個.NET應用來連接Mongo數據庫并執(zhí)行多種操作。同時還稍微涉及了Mongo數據庫和多種命令
    2013-11-11
  • C#中TaskFactory實現

    C#中TaskFactory實現

    在C#中,TaskFactory是一個用于創(chuàng)建異步任務的類,本文主要介紹了C#中TaskFactory實現,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • C#組件FormDragger窗體拖拽器詳解

    C#組件FormDragger窗體拖拽器詳解

    這篇文章主要為大家詳細介紹了C#組件FormDragger窗體拖拽器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#設置自定義文件圖標實現雙擊啟動(修改注冊表)

    C#設置自定義文件圖標實現雙擊啟動(修改注冊表)

    這篇文章介紹的是利用C#設置自定義文件圖標,然后實現雙擊啟動的功能,文章給出了示例代碼,介紹的很詳細,有需要的可以參考借鑒。
    2016-08-08
  • C#使用log4net記錄日志的方法步驟

    C#使用log4net記錄日志的方法步驟

    本文主要介紹了C#使用log4net記錄日志的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • c#使用htmlagilitypack解析html格式字符串

    c#使用htmlagilitypack解析html格式字符串

    這篇文章主要介紹了c#使用htmlagilitypack解析html格式字符串的示例,需要的朋友可以參考下
    2014-03-03
  • C#編程實現向并口設備發(fā)送指令、獲取并口設備的狀態(tài)

    C#編程實現向并口設備發(fā)送指令、獲取并口設備的狀態(tài)

    這篇文章主要介紹了C#編程實現向并口設備發(fā)送指令、獲取并口設備的狀態(tài),本文直接給出實例代碼,需要的朋友可以參考下
    2015-06-06
  • C#如何快速釋放內存的大數組詳解

    C#如何快速釋放內存的大數組詳解

    這篇文章主要給大家介紹了關于C#如何快速釋放內存的大數組的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • C#實現對象的序列化和反序列化

    C#實現對象的序列化和反序列化

    這篇文章介紹了C#實現對象序列化和反序列化的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-07-07

最新評論