Viết thông tin nhị phân vào tập tin

Một phần của tài liệu Tài Liệu Học Ngôn Ngữ Lập Trình C#_p9 potx (Trang 37 - 40)

L p File Ph ng th c Mô t

Viết thông tin nhị phân vào tập tin

Nếu chœng ta sử dụng một tập tin văn bản, th khi chœng ta lưu dữ liệu kiểu số th phải thực hiện việc chuyển đổi sang dạng chuỗi k tựđể lưu v o trong tập tin văn bản v khi lấy ra

ữ ậ

ta cũng lấy được giÆ trị chuỗi k tự do đó ta phải chuyển sang dạng số. Đôi khi chœng ta muốn c cÆch thức n o đó tốt hơn để lưu trực tiếp giÆ trị v o trong tập tin v sau đóđọc trực tiếp giÆ trị ra từ tập tin. V dụ khi viết một số lượng lớn cÆc số integer v o trong tập tin như l những số nguyŒn, th khi đó ta c thểđọc cÆc giÆ trị n y ra như l số integer. Trường hợp nếu chœng được viết v o tập tin với dạng văn bản, th khi đọc ra ta phải đọc ra văn bản v phải chuyển mỗi giÆ trị từ một chuỗi đến cÆc số integer. Tốt hơn việc phải thực hiện thŒm cÆc bước chuyển đổi, ta c thể gắn một kiểu luồng nhị ph n BinaryStream v o trong một tập tin, rồi sau đóđọc v ghi th ng tin nhị ph n từ luồng n y.

Tiếp theo ta sẽ xem một v dụ minh họa việc đọc viết dữ liệu nhị ph n v o một tập tin. Mặc dø trong chương tr nh n y thực hiện việc viết 100 giÆ trị integer v o trong một tập tin nhưng c thể dễ d ng viết bất cứ kiểu dữ liệu n o khÆc.

Ghi chú: Th ng tin nhị ph n l th ng tin đª được định dạng kiểu lưu trữ dữ liệu.

Ví dụ 12.9: Viết vào một tập tin nhị phân.

--- //binarywriter.cs using System; using System.IO; namespace Programming_CSharp {

public class Tester {

public static void Main(string[] args) {

if ( args.Length < 1) {

Console.WriteLine(“Phai nhap ten tap tin!”); }

else {

FileStream myFile = new FileStream( args[0], FileMode.CreateNew); BinaryWriter bwFile = new BinaryWriter(myFile);

for (int i=0; i < 100; i++) { bwFile.Write(i); } bwFile.Close(); myFile.Close(); }

ữ ậ

} } }

}

---

Cũng tương tự như cÆc v dụ trŒn th tŒn tập tin được đưa v o tham số d ng lệnh. Nếu chương tr nh được nhập cÆc tham sốđầy đủ, chương tr nh sẽ thực hiện việc viết th ng tin nhị ph n v o trong tập tin, v kh ng c output ra m n h nh console. Nếu chœng ta mở tập tin v xem th chỉ thấy cÆc k tự mở rộng đựơc thể hiện, sẽ kh ng thấy những sốđọc được.

Trong chương tr nh n y cũng chưa thực hiện việc xử l cÆc ngoại lệ. Nếu thực hiện việc viết th ng tin v o một tập tin đª hiện hữu, th một ngoại lệ sẽđược phÆt sinh khi thực hiện lệnh:

FileStream myFile = new FileStream( args[0], FileMode.CreateNew);

Trong chương tr nh 12.9 n y thực hiện việc tạo v mở tập tin khÆc với việc mở tập tin văn bản. Lệnh trŒn tạo một đối tượng FileStream gọi l myFile. Luồng n y được gắn với tập tin th ng qua bộ khởi dựng. Tham sốđầu tiŒn của bộ khởi dựng l tŒn của tập tin m chœng ta tạo (args[0]), tham số thứ hai l mode m chœng ta mở. Tham số n y l giÆ trị kiểu liệt kŒ FileMode, trong chương tr nh th do chœng ta thực hiện việc tạo mới để ghi nŒn sử dụng giÆ trị FileMode.CreateNew. Bảng 12.3 sau liệt kŒ những mode giÆ trị khÆc trong kiểu liệt kŒ FileMode. Giá tr Append Create CreateNew Open OpenOrCreate Truncate nh ngh a Mở một tập tin hiện hữu hoặc tạo một tập tin mới Tạo một tập tin mới. Nếu một tập tin đª hiện hữu, n sẽ bị x a v một tập tin mới sẽđược tạo ra với cøng tŒn. Tạo một tập tin mới. Nếu một tập tin đª tồn tại th một ngoại lệ sẽđược phÆt sinh.

Mở tập tin hiện hữu.

Mở tập tin hay tạo tập tin mới nếu tập tin chưa tồn tại Mở một tập tin hiện hữu v x a nội dung của n .

Bảng 12.4: Giá trị của FileMode.

Sau khi tạo ra FileStream, chœng ta cần thiết phải thiết lập để n l m việc với dữ liệu nhị ph n. D ng lệnh tiếp theo:

BinaryWriter bwFile = new BinaryWriter(myFile);

D ng n y thiết lập một kiểu viết dữ liệu nhị ph n v o trong luồng bằng cÆch khai bÆo kiểu BinaryWrite. Đối tượng thể hiện của BinaryWrite l bwFileđược tạo ra. myFileđược truyền v o bộ khởi dựng BinaryWrite, n sẽ gắn bwFile với myFile.

for (int i=0; i < 100; i++) {

ữ ậ

} (adsbygoogle = window.adsbygoogle || []).push({});

V ng lặp n y thực hiện việc viết trực tiếp giÆ trị integer v o trong BinaryWrite bwFile bằng cÆch sử dụng phương thức Write. Dữ liệu được viết c thể l kiểu dữ liệu đặc biệt khÆc. Trong chương tr nh n y th sử dụng giÆ trị integer. Khi thực hiện xong cÆc c ng việc viết v o tập tin, chœng ta cần thiết phải đóng luồng m chœng tảđª mở.

Một phần của tài liệu Tài Liệu Học Ngôn Ngữ Lập Trình C#_p9 potx (Trang 37 - 40)