Hoạt động tập tin nâng cao trong C # (Phần 2)

0
282

Ở phần trước mình đã giới thiệu với các bạn về đọc và viết trên tập tin văn bản nhờ sử dụng lớp StreamReader StreamWriter. Bài này sẽ tiếp tục với chủ đề đọc từ và viết trên tập tin nhị phân.

Các lớp BinaryReader và BinaryWriter được sử dụng để đọc và ghi vào một tập tin nhị phân.

Lớp BinaryReader

Lớp BinaryReader được sử dụng để đọc dữ liệu nhị phân từ một tập tin. Một đối tượng BinaryWriter được tạo ra bằng cách thông qua một đối tượng FileStream để khởi tạo nó.

Bảng dưới đây mô tả các phương thức thường được sử dụng của lớp BinaryReader.

STT Phương thức
1 public override void Close()

Nó đóng đối tượng BinaryReader và dòng cơ bản.

2 public virtual int Read()

Nó đọc các ký tự của dòng cơ bản.

3 public virtual bool ReadBoolean()

Đọc giá trị Boolean từ dòng hiện tại.

4 public virtual byte ReadByte()

Đọc các byte kế tiếp từ dòng hiện tại.

5 public virtual byte[] ReadBytes(int count)

Đọc số byte từ dòng hiện tại của một mảng byte.

6 public virtual char ReadChar()

Đọc các ký tự tiếp theo từ dòng hiện tại.

7 public virtual char[] ReadChars(int count)

Đọc số quy định của các ký tự từ các dòng hiện tại, trả về dữ liệu trong một mảng ký tự.

8 public virtual double ReadDouble()

Đọc giá trị dấu chấm động(8-byte) từ dòng hiện tại.

9 public virtual int ReadInt32()

Đọc một số nguyên(4-byte) từ dòng hiện tại.

10 public virtual string ReadString()

Đọc một chuỗi từ dòng hiện tại.

Lớp BinaryWriter

Lớp BinaryWriter được sử dụng để ghi dữ liệu nhị phân đến một dòng. Một đối tượng BinaryWriter được tạo ra bằng cách thông qua một đối tượng FileStream để khởi tạo nó.

Bảng dưới đây mô tả các phương thức thường được sử dụng của lớp BinaryWriter.

STT Phương thức
1 public override void Close()

Nó đóng đối tượng BinaryWriter và dòng cơ bản.

2 public virtual void Flush()

Xóa tất cả các bộ đệm và làm cho dữ liệu trong bộ đệm ghi vào  thiết bị.

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

Thiết lập vị trí trong dòng hiện tại.

4 public virtual void Write(bool value)

Viết giá trị Boolean một byte vào dòng hiện tại, với 0 đại diện cho false và 1 đại diện cho true.

5 public virtual void Write(byte value)

Viết một byte unsigned vào dòng hiện tại.

6 public virtual void Write(byte[] buffer)

Ghi một mảng byte lên dòng cơ bản.

7 public virtual void Write(char ch)

Ghi một ký tự Unicode vào dòng hiện tại.

8 public virtual void Write(char[] chars)

Ghi một mảng ký tự lên dòng hiện tại.

9 public virtual void Write(double value)

Viết một giá trị số thực tám byte vào dòng hiện tại

10 public virtual void Write(int value)

Viết một số nguyên lên dòng hiện tại.

11 public virtual void Write(string value)

Viết một chuỗi lên dòng hiện tại.

Ví dụ

Ví dụ sau đây cho thấy việc đọc và ghi dữ liệu nhị phân:

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";
         
         //TẠO MỘT FILE
         try
         {
            bw = new BinaryWriter(new FileStream("mydata", FileMode.Create));
         }
         catch (IOException e)
         {
            Console.WriteLine(e.Message + "\n Khong the tao file.");
            return;
         }
         
         //GHI LEN MOT FILE
         try
         {
            bw.Write(i);
            bw.Write(d);
            bw.Write(b);
            bw.Write(s);
         }
         
         catch (IOException e)
         {
            Console.WriteLine(e.Message + "\n Khong the ghi len file.");
            return;
         }
         bw.Close();
         
         //ĐỌC TỪ FILE
         try
         {
            br = new BinaryReader(new FileStream("mydata", FileMode.Open));
         }
         catch (IOException e)
         {
            Console.WriteLine(e.Message + "\n Khong the mo 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 Khong the doc file.");
            return;
         }
         br.Close();
         
         Console.ReadKey();
      }
   }
}

Khi đoạn mã trên được biên dịch và thực thi, nó tạo ra các kết quả như sau:

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

Chúc bạn thành công!

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.