欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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í)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、二進(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.dbjr.com.cn/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)文章

  • C#常用排序方式總結(jié)

    C#常用排序方式總結(jié)

    在最近的項(xiàng)目中經(jīng)常會對C#中的數(shù)據(jù)進(jìn)行排序,對于基本數(shù)據(jù)類型,其排序方式比較簡單,只需要調(diào)用內(nèi)置算法即可實(shí)現(xiàn),但對于自定義數(shù)據(jù)類型以及自定義排序規(guī)則的情況實(shí)現(xiàn)起來就比較麻煩,所以在本文章中將詳細(xì)介紹一下在中C#中如何對數(shù)據(jù)進(jìn)行排序,需要的朋友可以參考下
    2024-01-01
  • 使用異步方式調(diào)用同步方法(實(shí)例詳解)

    使用異步方式調(diào)用同步方法(實(shí)例詳解)

    .NET Framework 允許您異步調(diào)用任何方法。為此,應(yīng)定義與您要調(diào)用的方法具有相同簽名的委托;公共語言運(yùn)行時會自動使用適當(dāng)?shù)暮灻麨樵撐卸xBeginInvoke和EndInvoke方法
    2013-10-10
  • UnityUI中繪制線狀統(tǒng)計(jì)圖

    UnityUI中繪制線狀統(tǒng)計(jì)圖

    這篇文章介紹了UnityUI中繪制線狀統(tǒng)計(jì)圖的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04
  • 淺談C#.NET、JavaScript和JSON

    淺談C#.NET、JavaScript和JSON

    本文介紹了C#.NET、JavaScript和JSON的相關(guān)知識,具有很好的參考價(jià)值,下面跟著小編一起來看下吧
    2017-02-02
  • C# 清除cookies的代碼

    C# 清除cookies的代碼

    不同的瀏覽器會把cookie文件保存在不同的地方.這篇文章主要介紹了C# 清除cookies的代碼,需要的朋友可以參考下
    2016-10-10
  • c#中SqlHelper封裝SqlDataReader的方法

    c#中SqlHelper封裝SqlDataReader的方法

    這篇文章主要介紹了c#中SqlHelper封裝SqlDataReader的方法,涉及C#針對數(shù)據(jù)庫相關(guān)操作封裝與使用的技巧,需要的朋友可以參考下
    2015-05-05
  • c#刪除數(shù)組中符合條件的元素(正確寫法)

    c#刪除數(shù)組中符合條件的元素(正確寫法)

    這篇文章主要介紹了c#刪除數(shù)組中符合條件的元素,分別給大家展示了錯誤寫法和正確寫法,補(bǔ)充介紹了從C#的數(shù)組中刪除指定元素的幾種方法,需要的朋友可以參考下
    2023-10-10
  • C#使用OpenCV剪切圖像中的圓形和矩形的示例代碼

    C#使用OpenCV剪切圖像中的圓形和矩形的示例代碼

    這篇文章主要介紹了C#使用OpenCV剪切圖像中的圓形和矩形,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 通過C#調(diào)用cmd來修改服務(wù)啟動類型

    通過C#調(diào)用cmd來修改服務(wù)啟動類型

    可以使用System.ServiceProcess.ServiceController這個類允許連接到正在運(yùn)行或者已停止的服務(wù)、對其進(jìn)行操作或獲取有關(guān)它的信息但是這個類并沒有提供修改服務(wù)啟動類型的方法,可以通過C#調(diào)用cmd來修改
    2012-12-12
  • C# 實(shí)現(xiàn)的圖片蓋章功能,支持拖拽、旋轉(zhuǎn)、放縮、保存

    C# 實(shí)現(xiàn)的圖片蓋章功能,支持拖拽、旋轉(zhuǎn)、放縮、保存

    這篇文章主要介紹了C# 實(shí)現(xiàn)的圖片蓋章功能,支持拖拽、旋轉(zhuǎn)、放縮、保存,需要的朋友可以參考下
    2014-04-04

最新評論