C# 向二進(jìn)制文件進(jìn)行讀寫的操作方法
完整代碼如下:
引入命名空間:
using System.IO;
完整代碼:
namespace BinaryStreamApp
{
class Program
{
static void Main(string[] args)
{
//為文件打開一個(gè)二進(jìn)制寫入器
FileStream fs;
fs = new FileStream("C:\\BinFile.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryWriter bw = new BinaryWriter(fs);
//準(zhǔn)備不同類型的數(shù)據(jù)
double aDouble = 1234.56;
int aInt = 34567;
char[] aCharArray = { 'A', 'B', 'C' };
//利用Write 方法的多種重載形式寫入數(shù)據(jù)
bw.Write(aDouble);
bw.Write(aInt);
bw.Write(aCharArray);
int length = Convert.ToInt32(bw.BaseStream.Length);
fs.Close();
bw.Close();
//讀取并輸出數(shù)據(jù)
fs = new FileStream("C:\\BinFile.dat", FileMode.OpenOrCreate, FileAccess.Read);
BinaryReader br = new BinaryReader(fs);
Console.WriteLine(br.ReadDouble().ToString());
Console.WriteLine(br.ReadInt32().ToString());
char[] data = http://www.dhdzp.com/andrew-blog/archive/2011/12/02/br.ReadChars(length);
for (int i = 0; i < data.Length; i++)
{
Console.WriteLine("{0,7:x}",data[i]);
}
fs.Close();
br.Close();
Console.ReadLine();
}
}
}
運(yùn)行效果:

在這個(gè)例子中,使用BinaryWriter對(duì)象的Write方法向文件寫入Double類型的變量 aDouble 時(shí),由于參數(shù)是Double類型,因此調(diào)用Write(Double)的重載形式,向文件流寫入一個(gè)固定長度為8字節(jié)的浮點(diǎn)類型數(shù)據(jù)。與此對(duì)應(yīng),讀取該數(shù)據(jù)時(shí),采用ReadDouble()方法從當(dāng)前流中讀取8字節(jié)浮點(diǎn)值。
當(dāng)寫入Int32 類型的變量 aInt 時(shí),系統(tǒng)自動(dòng)調(diào)用Write(Int32) 方法,向文件流中寫入4 字節(jié)有符號(hào)整數(shù),讀取數(shù)據(jù)時(shí),調(diào)用ReadInt32()方法,從文件流中讀取4字節(jié)長度的數(shù)據(jù)。
可以看出,BinaryReader 和 BinaryWriter 對(duì)象在向流中寫入和讀取整型、浮點(diǎn)型等具有固定長度類型的數(shù)據(jù)時(shí),非常方便。
相關(guān)文章
詳解C#中的定時(shí)器Timer類及其垃圾回收機(jī)制
這篇文章主要介紹了C#中的定時(shí)器Timer類及其垃圾回收機(jī)制,講解了Timer相關(guān)的單線程異步工作,需要的朋友可以參考下2016-04-04
WPF實(shí)現(xiàn)動(dòng)畫效果(二)之From/To/By動(dòng)畫
這篇文章介紹了WPF實(shí)現(xiàn)動(dòng)畫效果之From/To/By動(dòng)畫,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06
C#使用Socket實(shí)現(xiàn)通信的方法示例
這篇文章主要介紹了C#使用Socket實(shí)現(xiàn)通信的方法示例,文章按照 Socket 的 創(chuàng)建、連接、傳輸數(shù)據(jù)、釋放資源的過程來寫,給出方法、參數(shù)的詳細(xì)信息,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下2024-06-06
C#實(shí)現(xiàn)Windows服務(wù)測(cè)試與調(diào)試
這篇文章介紹了C#實(shí)現(xiàn)Windows服務(wù)測(cè)試與調(diào)試的方法,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
.net中前臺(tái)javascript與后臺(tái)c#函數(shù)相互調(diào)用問題
.net中前臺(tái)javascript與后臺(tái)c#函數(shù)相互調(diào)用問題...2007-12-12
unity3D實(shí)現(xiàn)三維物體跟隨鼠標(biāo)
這篇文章主要為大家詳細(xì)介紹了unity3D實(shí)現(xiàn)三維物體跟隨鼠標(biāo),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-12-12
C#.NET實(shí)現(xiàn)網(wǎng)頁自動(dòng)登錄的方法
這篇文章主要介紹了C#.NET實(shí)現(xiàn)網(wǎng)頁自動(dòng)登錄的方法,以實(shí)例形式分析了C#實(shí)現(xiàn)點(diǎn)擊自動(dòng)登錄的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-09-09

