BinaryReader
和BinaryWriter
類用於讀取和寫入二進位制檔案。
BinaryReader
類用於從檔案讀取二進位制資料。通過將FileStream
物件傳遞給其建構函式來建立BinaryReader
物件。
下表介紹了BinaryReader
類的常用方法。
BinaryWriter
類用於將二進位制資料寫入流。通過將FileStream
物件傳遞給其建構函式來建立BinaryWriter
物件。
下表介紹了BinaryWriter
類的常用方法。
序號 | 方法 | 描述 |
---|---|---|
1 | public override void Close() |
它關閉BinaryWriter 物件和底層流。 |
2 | public virtual void Flush() |
清除當前寫入器的所有緩衝區,並將任何緩衝資料寫入底層裝置。 |
3 | public virtual long Seek(int offset, SeekOrigin origin) |
設定當前流中的位置。 |
4 | public virtual void Write(bool value) |
將一個位元組的布林值寫入當前流,其中0 表示false ,1 表示true 。 |
5 | public virtual void Write(byte value) |
將無符號位元組寫入當前流,並將流位置提前一個位元組。 |
6 | public virtual void Write(byte[] buffer) |
將一個位元組陣列寫入底層流。 |
7 | public virtual void Write(char ch) |
將Unicode字元寫入當前流,並根據所使用的編碼並將特定字元寫入流的當前位置。 |
8 | public virtual void Write(char[] chars) |
將字元陣列寫入當前流,並根據所使用的編碼和特定字元寫入流的當前位置。 |
9 | public virtual void Write(double value) |
將8 位元組的浮點值寫入當前流,將流位置提前8 位。 |
10 | public virtual void Write(int value) |
將一個4 位元組有符號整數寫入當前流,並將流位置提前4 個位元組。 |
11 | public virtual void Write(string value) |
在BinaryWriter 的當前編碼中將長度為字首的字串寫入此流,並根據所使用的編碼和將特定字元寫入流來提前流的當前位置。 |
有關方法的完整列表,請存取Microsoft C# 文件。
以下範例演示讀取和寫入二進位制資料:
using System;
using System.IO;
namespace BinaryFileApplication
{
class Program
{
static void Main(string[] args)
{
BinaryWriter bw;
BinaryReader br;
int i = 25;
double d = 3.14157;
bool b = true;
string s = "I am happy";
//create the file
try
{
bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
}
catch (IOException e)
{
Console.WriteLine(e.Message + "\n Cannot create file.");
return;
}
//writing into the file
try
{
bw.Write(i);
bw.Write(d);
bw.Write(b);
bw.Write(s);
}
catch (IOException e)
{
Console.WriteLine(e.Message + "\n Cannot write to file.");
return;
}
bw.Close();
//reading from the file
try
{
br = new BinaryReader(new FileStream("mydata", FileMode.Open));
}
catch (IOException e)
{
Console.WriteLine(e.Message + "\n Cannot open file.");
return;
}
try
{
i = br.ReadInt32();
Console.WriteLine("Integer data: {0}", i);
d = br.ReadDouble();
Console.WriteLine("Double data: {0}", d);
b = br.ReadBoolean();
Console.WriteLine("Boolean data: {0}", b);
s = br.ReadString();
Console.WriteLine("String data: {0}", s);
}
catch (IOException e)
{
Console.WriteLine(e.Message + "\n Cannot read from file.");
return;
}
br.Close();
Console.ReadKey();
}
}
}
當上述程式碼被編譯並執行時,它產生以下結果:
Integer data: 25
Double data: 3.14157
Boolean data: True
String data: I am happy