最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C# BinaryReader實(shí)現(xiàn)讀取二進(jìn)制文件

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

在 C# 以二進(jìn)制形式讀取數(shù)據(jù)時(shí)使用的是 BinaryReader 類。

BinaryReader 類中提供的構(gòu)造方法有 3 種,具體的語(yǔ)法形式如下。

第1種形式:

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

第2種形式:

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

第3種形式:

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

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

//創(chuàng)建文件流的實(shí)例
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 類的實(shí)例的創(chuàng)建后,即可完成對(duì)文件以二進(jìn)制形式的讀取。

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

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

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

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

下面通過(guò)實(shí)例來(lái)演示 BinaryReader 類中 Read 方法的使用。

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

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

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

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

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

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

根據(jù)題目要求,代碼如下。

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

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

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

相關(guān)文章

  • C#實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊

    C#實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊

    這篇文章主要為大家詳細(xì)介紹了C#實(shí)現(xiàn)簡(jiǎn)單俄羅斯方塊,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03
  • C# Task Cancellation使用總結(jié)

    C# Task Cancellation使用總結(jié)

    本文主要介紹了在使用CancellationTokenSource取消任務(wù)時(shí)的行為,以及如何使用Task的ContinueWith方法來(lái)處理任務(wù)的延續(xù)
    2024-12-12
  • C#深淺拷貝的深入解析

    C#深淺拷貝的深入解析

    這篇文章主要給大家介紹了關(guān)于C#深淺拷貝的深入解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用C#具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • winform 實(shí)現(xiàn)控制輸入法

    winform 實(shí)現(xiàn)控制輸入法

    在工作中遇到這樣一個(gè)問(wèn)題,在系統(tǒng)使用過(guò)程中,輸入法會(huì)變灰導(dǎo)致無(wú)法使用輸入法輸入文字,就好像輸入法被禁用了沒(méi)有啟用似的。對(duì)此,在這里做個(gè)備錄
    2015-08-08
  • Unity實(shí)現(xiàn)手機(jī)搖一搖震動(dòng)

    Unity實(shí)現(xiàn)手機(jī)搖一搖震動(dòng)

    這篇文章主要為大家詳細(xì)介紹了untiy實(shí)現(xiàn)手機(jī)搖一搖震動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • C#實(shí)現(xiàn)UDP打洞的示例代碼

    C#實(shí)現(xiàn)UDP打洞的示例代碼

    這篇文章主要為大家詳細(xì)介紹了C#中實(shí)現(xiàn)UDP打洞的相關(guān)知識(shí),文中的示例代碼簡(jiǎn)潔易懂,具有一定的借鑒價(jià)值,有需要的小伙伴可以參考一下
    2024-01-01
  • C#圖像灰度級(jí)拉伸的方法

    C#圖像灰度級(jí)拉伸的方法

    這篇文章主要介紹了C#圖像灰度級(jí)拉伸的方法,涉及C#灰度操作的相關(guān)技巧,需要的朋友可以參考下
    2015-04-04
  • C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法

    C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)TIF圖像轉(zhuǎn)PDF文件的方法,涉及C#使用TIFtoPDF工具實(shí)現(xiàn)pdf文件轉(zhuǎn)換的技巧,需要的朋友可以參考下
    2015-07-07
  • C# 中SharpMap的簡(jiǎn)單使用實(shí)例詳解

    C# 中SharpMap的簡(jiǎn)單使用實(shí)例詳解

    SharpMap是一個(gè)基于.net 2.0使用C#開(kāi)發(fā)的Map渲染類庫(kù),可以渲染各類GIS數(shù)據(jù)(目前支持ESRI Shape和PostGIS格式),可應(yīng)用于桌面和Web程序,具體內(nèi)容詳情大家參考下本文吧
    2017-08-08
  • C#中@字符d是個(gè)什么意思

    C#中@字符d是個(gè)什么意思

    這篇文章主要介紹了C#中@字符d是個(gè)什么意思?具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評(píng)論

定日县| 鹿泉市| 盘锦市| 江城| 丰台区| 柳江县| 道真| 乌鲁木齐县| 博白县| 团风县| 海门市| 会宁县| 商南县| 钟祥市| 盖州市| 久治县| 达孜县| 宜川县| 桓台县| 阜康市| 社旗县| 阿合奇县| 太保市| 安陆市| 策勒县| 长岛县| 甘肃省| 昌平区| 灵川县| 通道| 潜山县| 惠来县| 额济纳旗| 尼玛县| 花莲市| 陈巴尔虎旗| 慈溪市| 浮梁县| 崇阳县| 西峡县| 阳东县|