CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 365

365

Chương 9: File, thư mục, và I/O

Console.ReadLine();

}

}

8.

8.

Đ c và ghi file nh phân

Đ c và ghi file nh phân

Bạn cần ghi dữ liệu vào file nhị phân với kiểu dữ liệu mạnh.

Tạo một đối tượng

System.IO.FileStream

tham chiếu đến file. Để ghi file, hãy gói

FileStream

trong một

System.IO.BinaryWriter

và sử dụng phương thức nạp

chồng

Write

. Để đọc file, hãy gói

FileStream

trong một

System.IO.BinaryReader

và sử dụng phương thức

Read

phù hợp với kiểu dữ liệu.

.NET cho phép bạn ghi hay đọc dữ liệu nhị phân bằng lớp

BinaryWriter

BinaryReader

. Khi

ghi dữ liệu với

BinaryWriter

, hãy sử dụng phương thức

BinaryWriter.Write

. Phương thức

này được nạp chồng để hỗ trợ tất cả kiểu dữ liệu thông thường trong C# .NET, bao gồm chuỗi,
ký tự, số nguyên, số thực dấu chấm động, số thập phân,... Thông tin sau đó được mã hóa thành
một dãy các byte và ghi vào file. Bạn có thể chỉ định kiểu mã hóa cho chuỗi bằng một phương
thức khởi dựng nạp chồng nhận một đối tượng

System.Text.Encoding

làm đối số (đã được mô

tả trong mục 9.7).
Sử dụng file nhị phân để thao tác với các kiểu dữ liệu thì khá phức tạp, vì khi truy xuất thông
tin, bạn phải sử dụng một trong những phương thức

Read

kiểu mạnh của

BinaryReader

. Ví dụ:

muốn truy xuất dữ liệu dạng thập phân thì phải sử dụng

ReadDecimal

; còn muốn đọc một

chuỗi thì phải sử dụng

ReadString

(

BinaryWriter

luôn ghi lại chiều dài của chuỗi khi ghi

chuỗi vào file để tránh lỗi).
Ứng dụng Console dưới đây minh họa việc ghi và đọc một file nhị phân:

using System;

using System.IO;

public class BinaryFileTest {

private static void Main() {

// Tạo file và tạo writer.

FileStream fs = new FileStream("test.txt", FileMode.Create);

BinaryWriter w = new BinaryWriter(fs);

// Ghi một số thập phân, hai chuỗi, và một ký tự.

w.Write(124.23M);

w.Write("Test string");

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.