C# 向二進制文件進行讀寫的操作方法
完整代碼如下:
引入命名空間:
using System.IO;
完整代碼:
namespace BinaryStreamApp
{
class Program
{
static void Main(string[] args)
{
//為文件打開一個二進制寫入器
FileStream fs;
fs = new FileStream("C:\\BinFile.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
BinaryWriter bw = new BinaryWriter(fs);
//準備不同類型的數(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.dbjr.com.cn/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();
}
}
}
運行效果:
在這個例子中,使用BinaryWriter對象的Write方法向文件寫入Double類型的變量 aDouble 時,由于參數(shù)是Double類型,因此調(diào)用Write(Double)的重載形式,向文件流寫入一個固定長度為8字節(jié)的浮點類型數(shù)據(jù)。與此對應,讀取該數(shù)據(jù)時,采用ReadDouble()方法從當前流中讀取8字節(jié)浮點值。
當寫入Int32 類型的變量 aInt 時,系統(tǒng)自動調(diào)用Write(Int32) 方法,向文件流中寫入4 字節(jié)有符號整數(shù),讀取數(shù)據(jù)時,調(diào)用ReadInt32()方法,從文件流中讀取4字節(jié)長度的數(shù)據(jù)。
可以看出,BinaryReader 和 BinaryWriter 對象在向流中寫入和讀取整型、浮點型等具有固定長度類型的數(shù)據(jù)時,非常方便。
相關文章
RegexOptions.IgnoreCase正則表達式替換,忽略大小寫
RegexOptions.IgnoreCase正則表達式替換,忽略大小寫,需要的朋友可以參考一下2013-03-03C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法
這篇文章主要介紹了C#使用DeflateStream解壓縮數(shù)據(jù)文件的方法,較為詳細的分析了DeflateStream方法對文件進行壓縮及解壓縮的步驟與技巧,需要的朋友可以參考下2015-04-04