中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么使用C#二進制讀寫BinaryReader、BinaryWriter、BinaryFormatter

發布時間:2022-06-15 09:24:16 來源:億速云 閱讀:196 作者:iii 欄目:開發技術

本篇內容介紹了“怎么使用C#二進制讀寫BinaryReader、BinaryWriter、BinaryFormatter”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

一、二進制讀寫類:

1、BinaryReader/BinaryWriter:二進制讀寫

  • BinaryReader:用特定的編碼將基元數據類型讀作二進制值。

  • BinaryWriter:以二進制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。

2、XmlReader/XmlWriter :XML讀寫

二、BinaryReader/BinaryWriter

讀寫流的基元數據類型。可以操作圖像、壓縮文件等二進制文件。也可以是MemoryStream等。

不需要一個字節一個字節進行操作,可以是2個、4個、或8個字節這樣操作。

可以將一個字符或數字按指定數量的字節進行寫入。

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()方法輸出二進制圖像

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

2、讀取:

每次讀取都回提升流中的當前位置相應數量的字節。

下面的代碼示例演示了如何存儲和檢索文件中的應用程序設置。

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))
{
    //將圖片以文件流的形式進行保存
    using (BinaryReader br = new BinaryReader(fs))
    {
        byte[] imgBytesIn = br.ReadBytes((int)fs.Length); //將流讀入到字節數組中
        br.Close();
    }
}

三、以二進制格式序列化對象BinaryFormatter

1、SoapFormatter(用于HTTP中)和BinaryFormatter(用于TCP中)類實現了IFormatter接口 (由繼承IRemotingFormatter,支持遠程過程調用 (Rpc))

  • Deserialize(Stream) 反序列化所提供流中的數據并重新組成對象圖形。

  • Serialize(Stream, Object) 將對象或具有給定根的對象圖形序列化為所提供的流。

2、舉例:

[Serializable]
public class Product //實體類
{
    public long Id;
    [NonSerialized]//標識不序列化此成員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();

    //反序列化(文件內容轉成對象)
    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);
    }
}

“怎么使用C#二進制讀寫BinaryReader、BinaryWriter、BinaryFormatter”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁晋县| 柳河县| 阿拉尔市| 枣强县| 阿坝| 南川市| 濮阳县| 民勤县| 施秉县| 晴隆县| 平乡县| 巢湖市| 本溪市| 邵东县| 武清区| 德安县| 郧西县| 周至县| 阿合奇县| 鹤岗市| 罗定市| 丁青县| 阜城县| 青州市| 陇川县| 甘德县| 阿拉善盟| 开鲁县| 宁城县| 哈尔滨市| 许昌县| 新乡市| 会同县| 赣州市| 元氏县| 荔波县| 昆山市| 玉屏| 禹州市| 英吉沙县| 仙桃市|