You are on page 1of 6

http://vietjack.com/csharp/index.jsp Copyright © vietjack.

com

Đọc và ghi binary file trong C#


Các lớp BinaryReader và BinaryWriter trong C# được sử dụng để đọc và ghi một binary file (file
nhị phân).

Lớp BinaryReader trong C#


Lớp BinaryReader trong C# được sử dụng để đọc dữ liệu nhị phân từ một file. Một đối tượng
BinaryReader được tạo bằng việc truyền một đối tượng FileSream tới constructor của nó.

The following table describes commonly used methods of the BinaryReader class.

STT Phương thức

1 public override void Close()

Nó đóng đối tượng BinaryReader và Underlying Stream

2 public virtual int Read()

Đọc ký tự từ Underlying Stream và tăng vị trí hiện tại của stream

3 public virtual bool ReadBoolean()

Đọc một giá trị Boolean từ stream hiện tại và tăng vị trí hiện tại của stream thêm 1 byte

4 public virtual byte ReadByte()

Đọc byte kế tiếp từ stream hiện tại và tăng vị trí hiện tại của stream thêm 1 byte

5 public virtual byte[] ReadBytes(int count)

Đọc số byte đã cho từ stream hiện tại vào trong một mảng byte và tăng vị trí hiện tại
bởi số byte đó

6 public virtual char ReadChar()

Đọc ký tự tiếp theo từ stream hiện tại và tăng vị trí hiện tại của stream mà phù hợp với

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 1
http://vietjack.com/csharp/index.jsp Copyright © vietjack.com

Encoding đã sử dụng và ký tự cụ thể đang được đọc từ stream đó

7 public virtual char[] ReadChars(int count)

Đọc số ký tự đã xác định từ stream hiện tại, trả về dữ liệu trong một mảng ký tự, và
tăng vị trí hiện tại mà phù hợp với Encoding đã sử dụng và ký tự cụ thể đang được
đọc từ stream đó

8 public virtual double ReadDouble()

Đọc một giá trị số thực 8 byte từ stream hiện tại và tăng vị trí hiện tại của stream thêm
8 byte

9 public virtual int ReadInt32()

Đọc một giá trị signed integer 4 byte từ stream hiện tại và tăng vị trí hiện tại của
stream thêm 4 byte

10 public virtual string ReadString()

Đọc một chuỗi từ stream hiện tại. Chuỗi được đặt trước với length, được mã hóa như
là một integer 7 bit tại một thời điểm

Lớp BinaryWriter trong C#


Lớp BinaryWriter trong C# được sử dụng để ghi dữ liệu nhị phân tới một stream. Một đối tượng
BinaryWriter được tạo bằng việc truyền một đối tượng FileStream tới constructor của nó.

Bảng dưới liệt kê các phương thức được sử dụng phổ biến của lớp BinaryWriter trong C#:

STT Phương thức

1 public override void Close()

Nó đóng đối tượng BinaryWriter và Underlying Stream

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 2
http://vietjack.com/csharp/index.jsp Copyright © vietjack.com

2 public virtual void Flush()

Xóa tất cả buffer cho Writer hiện tại và làm cho bất kỳ dữ liệu đã được đệm nào để
được ghi tới Underlying Device

3 public virtual long Seek(int offset, SeekOrigin origin)

Thiết lập vị trí bên trong Stream hiện tại

4 public virtual void Write(bool value)

Ghi một giá trị Boolean 1 byte tới stream hiện tại, với: 0 biểu diễn false, 1 biểu diễn
true

5 public virtual void Write(byte value)

Ghi một unsigned byte tới stream hiện tại và tăng vị trí stream thêm 1 byte

6 public virtual void Write(byte[] buffer)

Ghi một mảng byte tới underlying stream

7 public virtual void Write(char ch)

Ghi một ký tự Unicode tới stream hiện tại và tăng vị trí hiện tại của stream mà phù hợp
với Encoding đã sử dụng và ký tự cụ thể đang được ghi tới stream đó

8 public virtual void Write(char[] chars)

Ghi một mảng ký tự tới stream hiện tại và tăng vị trí hiện tại của stream mà phù hợp
với Encoding đã sử dụng và ký tự cụ thể đang được ghi tới stream đó

9 public virtual void Write(double value)

Ghi một giá trị số thực 8 byte tới stream hiện tại và tăng vị trí stream thêm 8 byte

10 public virtual void Write(int value)

Ghi một giá trị signed integer 4 byte tới stream hiện tại và tăng vị trí stream thêm 4

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 3
http://vietjack.com/csharp/index.jsp Copyright © vietjack.com

byte

11 public virtual void Write(string value)

Ghi một length-prefixed string tới stream này trong Encoding hiện tại của BinaryWriter,
và tăng vị trí hiện tại của stream mà phù hợp với Encoding đã sử dụng và ký tự cụ thể
đang được ghi tới stream đó

Để có danh sách đầy đủ của các phương thức của lớp BinaryReader và BinaryWriter, bạn tham
khảo Microsoft Documentation về C#.

Ví dụ
Dưới đây là ví dụ minh họa cách đọc và ghi dữ liệu nhị phân trong 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));

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 4
http://vietjack.com/csharp/index.jsp Copyright © vietjack.com

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;

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 5
http://vietjack.com/csharp/index.jsp Copyright © vietjack.com

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();

Khi code trên được biên dịch và thực thi, nó sẽ cho kết quả:

Integer data: 25
Double data: 3.14157
Boolean data: True
String data: I am happy

http://vietjack.com/ Trang chia sẻ các bài học online miễn phí Page 6

You might also like