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

C#二進(jìn)制讀寫B(tài)inaryReader、BinaryWriter、BinaryFormatter

 更新時間:2022年06月14日 16:57:36   作者:springsnow  
這篇文章介紹了C#二進(jìn)制讀寫B(tài)inaryReader、BinaryWriter、BinaryFormatter的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、二進(jìn)制讀寫類:

1、BinaryReader/BinaryWriter:二進(jìn)制讀寫

  • BinaryReader:用特定的編碼將基元數(shù)據(jù)類型讀作二進(jìn)制值。
  • BinaryWriter:以二進(jìn)制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。

2、XmlReader/XmlWriter :XML讀寫

見:C#使?XmlReader和XmlWriter操作XML?件

二、BinaryReader/BinaryWriter

讀寫流的基元數(shù)據(jù)類型??梢圆僮鲌D像、壓縮文件等二進(jìn)制文件。也可以是MemoryStream等。

不需要一個字節(jié)一個字節(jié)進(jìn)行操作,可以是2個、4個、或8個字節(jié)這樣操作。

可以將一個字符或數(shù)字按指定數(shù)量的字節(jié)進(jìn)行寫入。

1、寫入:

using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
{
    writer.Write(1.250F);
    writer.Write(@"c:\Temp");
    writer.Write(10);
    writer.Write(true);
}

Response.BinaryWrite()方法輸出二進(jìn)制圖像

FileStream fs = new FileStream(Server.MapPath("未命名.jpg"), FileMode.Open);//將圖片文件存在文件流中
long fslength = fs.Length;//流長度
byte[] b=new byte[(int)fslength];//定義二進(jìn)制數(shù)組
fs.Read(b, 0, (int)fslength);//將流中字節(jié)寫入二進(jìn)制數(shù)組中
fs.Close();//關(guān)閉流
Response.ContentType = "image/jpg";//沒有這個會出現(xiàn)亂碼
Response.BinaryWrite(b);//將圖片輸出在頁面

2、讀?。?/h3>

每次讀取都回提升流中的當(dāng)前位置相應(yīng)數(shù)量的字節(jié)。

下面的代碼示例演示了如何存儲和檢索文件中的應(yīng)用程序設(shè)置。

const string fileName = "AppSettings.dat";
float aspectRatio;
string tempDirectory;
int autoSaveTime;
bool showStatusBar;

if (File.Exists(fileName))
{
    using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
    {
        aspectRatio = reader.ReadSingle();
        tempDirectory = reader.ReadString();
        autoSaveTime = reader.ReadInt32();
        showStatusBar = reader.ReadBoolean();
    }

    Console.WriteLine("Aspect ratio set to: " + aspectRatio);
    Console.WriteLine("Temp directory is: " + tempDirectory);
    Console.WriteLine("Auto save time set to: " + autoSaveTime);
    Console.WriteLine("Show status bar: " + showStatusBar);
}

BinaryReader讀取圖片:

using (FileStream fs = new FileStream("1.jpg", FileMode.Open, FileAccess.Read))
{
    //將圖片以文件流的形式進(jìn)行保存
    using (BinaryReader br = new BinaryReader(fs))
    {
        byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //將流讀入到字節(jié)數(shù)組中
        br.Close();
    }
}

三、以二進(jìn)制格式序列化對象BinaryFormatter

1、SoapFormatter(用于HTTP中)和BinaryFormatter(用于TCP中)類實(shí)現(xiàn)了IFormatter接口 (由繼承IRemotingFormatter,支持遠(yuǎn)程過程調(diào)用 (Rpc))

  • Deserialize(Stream) 反序列化所提供流中的數(shù)據(jù)并重新組成對象圖形。
  • Serialize(Stream, Object) 將對象或具有給定根的對象圖形序列化為所提供的流。

XML序列化見:http://www.fzitv.net/article/250477.htm

2、舉例:

[Serializable]
public class Product //實(shí)體類
{
    public long Id;
    [NonSerialized]//標(biāo)識不序列化此成員Name
    public string Name;
    public Product(long Id, string Name)
    {
        this.Id = Id;
        this.Name = Name;
    }
}

static void Main()
{
    //序列化(對象保存到文件)
    List<Product> Products = new List<Product> {
        new Product(1,"a"),new Product(2,"b")
    };

    FileStream fs = new FileStream("DataFile.dat", FileMode.Create);
    IFormatter formatter = new BinaryFormatter();
    formatter.Serialize(fs, Products);
    fs.Close();

    //反序列化(文件內(nèi)容轉(zhuǎn)成對象)
    FileStream fs1 = new FileStream("DataFile.dat", FileMode.Open);
    BinaryFormatter formatter1 = new BinaryFormatter();
    List<Product> addresses = (List<Product>)formatter1.Deserialize(fs1);
    fs1.Close();
    foreach (Product de in addresses)
    {
        Console.WriteLine("{0} lives at {1}.", de.Id, de.Name);
    }
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • WebService 的簡單封裝接口調(diào)用方法

    WebService 的簡單封裝接口調(diào)用方法

    這篇文章主要介紹了WebService 的簡單封裝接口調(diào)用方法,主要是通過簡單的sql語句來查詢數(shù)據(jù)庫,從而返回dataset,十分簡單實(shí)用,有需要的小伙伴可以參考下。
    2015-06-06
  • C# 獲取進(jìn)程退出代碼的實(shí)現(xiàn)示例

    C# 獲取進(jìn)程退出代碼的實(shí)現(xiàn)示例

    這篇文章主要介紹了C# 獲取進(jìn)程退出代碼的實(shí)現(xiàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-02-02
  • C#中POST接口formdata傳參模板的記錄

    C#中POST接口formdata傳參模板的記錄

    這篇文章主要介紹了C#中POST接口formdata傳參模板的記錄方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • C#實(shí)現(xiàn)Array,List,Dictionary相互轉(zhuǎn)換

    C#實(shí)現(xiàn)Array,List,Dictionary相互轉(zhuǎn)換

    這篇文章介紹了C#實(shí)現(xiàn)Array,List,Dictionary互相轉(zhuǎn)換的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-04-04
  • 利用C#實(shí)現(xiàn)獲取與監(jiān)控電腦系統(tǒng)信息

    利用C#實(shí)現(xiàn)獲取與監(jiān)控電腦系統(tǒng)信息

    在C#中,獲取與監(jiān)控電腦系統(tǒng)信息通常可以通過多種方式實(shí)現(xiàn),這篇文章主要為大家整理了幾種常見的方法及其示例代碼,希望對大家有所幫助
    2024-11-11
  • C#實(shí)現(xiàn)數(shù)獨(dú)解法

    C#實(shí)現(xiàn)數(shù)獨(dú)解法

    這篇文章介紹了C#實(shí)現(xiàn)數(shù)獨(dú)解法的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C#實(shí)現(xiàn)刷新桌面的方法

    C#實(shí)現(xiàn)刷新桌面的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)刷新桌面的方法,涉及C#基于shell32.dll動態(tài)鏈接庫實(shí)現(xiàn)系統(tǒng)桌面刷新的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#實(shí)現(xiàn)搶紅包算法的示例代碼

    C#實(shí)現(xiàn)搶紅包算法的示例代碼

    很多商家都會使用紅包進(jìn)行促銷,那么你知道紅包算法是怎么實(shí)現(xiàn)的嗎,本文主要介紹了C#實(shí)現(xiàn)搶紅包算法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • C#線程倒計時器源碼分享

    C#線程倒計時器源碼分享

    這篇文章主要為大家分享了C#線程倒計時器源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • 基于C#實(shí)現(xiàn)任意格式JSON文本的HTTP交互抽象類

    基于C#實(shí)現(xiàn)任意格式JSON文本的HTTP交互抽象類

    為了實(shí)現(xiàn)一個支持任意格式JSON交互的抽象類,并且在整個過程中不需要對JSON格式數(shù)據(jù)進(jìn)行序列化和反序列化操作,可以使用C#中的HttpClient類來進(jìn)行HTTP請求和響應(yīng),本文給大家介紹了基于C#實(shí)現(xiàn)任意格式JSON文本的HTTP交互抽象類,需要的朋友可以參考下
    2025-03-03

最新評論

错那县| 汪清县| 漳州市| 秦皇岛市| 峨眉山市| 温州市| 安图县| 万年县| 临汾市| 安仁县| 宜春市| 来安县| 钟山县| 逊克县| 绥芬河市| 咸阳市| 梅州市| 福州市| 即墨市| 隆回县| 包头市| 瓦房店市| 万盛区| 松滋市| 洞口县| 吉水县| 铅山县| 三都| 巩留县| 商南县| 滨州市| 中超| 泾源县| 哈巴河县| 杂多县| 大姚县| 丰台区| 西安市| 北碚区| 皋兰县| 冕宁县|