Tập tin I / O trong C#

0
425

Một tập tin là một tập hợp các dữ liệu được lưu trữ trong một đĩa với một tên cụ thể và một đường dẫn thư mục. Khi một tập tin được mở để đọc hoặc viết, nó sẽ trở thành một luồng tin.

Các luồng tin cơ bản là trình tự của byte đi qua con đường truyền thông. Có hai luồng chính: luồng đầu vào và luồng đầu ra. Các luồng đầu vào được sử dụng để đọc dữ liệu từ tập tin (đọc hoạt động) và các luồng sản lượng được sử dụng cho việc ghi lên tập tin (ghi hoạt động).

Lớp I/O

Namespace System.IO có các lớp khác nhau được sử dụng để thực hiện nhiều hoạt động với các tập tin, chẳng hạn như việc tạo và xóa các tập tin, đọc hoặc viết vào một tập tin, đóng một tập tin, vv..

Bảng dưới đây cho thấy một số lớp không trừu tượng thường được sử dụng trong namespace System.IO:

Lớp I/O Mô tả
BinaryReader Đọc dữ liệu nguyên bản từ một dòng nhị phân.
BinaryWriter Đọc dữ liệu nguyên bản từ một dòng nhị phân.
BufferedStream Một lưu trữ tạm thời cho một dòng các byte.
Directory Giúp trong việc điều khiển một cấu trúc thư mục.
DirectoryInfo Được sử dụng để thực hiện các hoạt động trên các thư mục.
DriveInfo Cung cấp thông tin cho các ổ đĩa.
File Giúp thao tác tập tin.
FileInfo Được sử dụng để thực hiện các hoạt động trên các tập tin.
FileStream Được sử dụng để đọc và ghi vào vị trí bất kỳ trong một tập tin.
MemoryStream Được sử dụng để truy cập ngẫu nhiên luồng dữ liệu lưu trong bộ nhớ.
Path Thực hiện các hoạt động về thông tin đường dẫn.
StreamReader Được sử dụng để đọc các ký tự từ một dòng byte.
StreamWriter Được sử dụng để ghi các ký tự lên một dòng byte.
StringReader Được sử dụng để đọc từ một bộ đệm chuỗi.
StringWriter Được sử dụng để ghi lên một bộ đệm chuỗi.

Lớp FileStream

Các lớp FileStream trong namespace System.IO giúp đọc, ghi và đóng file. Lớp này xuất phát từ lớp trừu tượng Stream.

Bạn cần phải tạo ra một đối tượng FileStream để tạo ra một tập tin mới hoặc mở một tập tin hiện có. Cú pháp để tạo một đối tượng FileStream là như sau:

FileStream <Ten-doi-tuong> = new FileStream( <ten_file>, <FileMode Enumerator>,
                                            <FileAccess Enumerator>, <FileShare Enumerator>);

Ví dụ, chúng ta tạo ra một đối tượng FileStream F cho đọc một tập tin có tên sample.text như sau:

FileStream F = new FileStream("sample.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
Tham số Mô tả
FileMode FileMode chứa các phương thức khác nhau để mở tập tin. Các thành viên cảu FileMode là:

  • Append: Nó mở ra một tập tin hiện có và đặt con trỏ ở cuối của tập tin, hoặc tạo ra các tập tin, nếu các tập tin không tồn tại.
  • Create: Nó tạo ra một tập tin mới.
  • CreateNew: Nó chỉ định cho hệ điều hành, là nó sẽ tạo ra một tập tin mới.
  • Open: Nó mở ra một tập tin hiện có.
  • OpenOrCreate: Nó chỉ định cho hệ điều hành là nó sẽ mở ra một tập tin nếu nó tồn tại, nếu không nó sẽ tạo ra một tập tin mới.
  • Truncate: Nó mở ra một tập tin hiện có và đặt kích thước về 0 byte.
FileAccess FileAccess bao gồm các thành phần: Read, ReadWrite and Write.
FileShare FileShare bao gồm các thành viên sau:

  • Inheritable: Nó cho phép một xử lý tập tin cho phép thừa kế bởi các tiến trình con
  • None: Nó từ chối chia sẻ các tập tin hiện hành
  • Read: Nó cho phép mở tập tin để đọc
  • ReadWrite: Nó cho phép mở tập tin để đọc và viết
  • Write: Nó cho phép mở tập tin để ghi

Ví dụ

Chương trình sau minh họa cách sử dụng lớp FileStream:

using System;
using System.IO;

namespace FileIOApplication
{
   class Program
   {
      static void Main(string[] args)
      {
         //Tao doi tuong FileStream
         FileStream F = new FileStream("test.dat", FileMode.OpenOrCreate, FileAccess.ReadWrite);
         for (int i = 1; i <= 20; i++)
         {
            F.WriteByte((byte)i);  //Tao mot dong Byte
         }
         
         F.Position = 0; //Dat ve vi tri byte dau tien
         for (int i = 0; i <= 20; i++)
         {
            Console.Write(F.ReadByte() + " "); //Doc dong Byte va in ra man hinh
         }
         F.Close();  //Dong doi tuong FileStream
         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:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 -1

Hoạt động tập tin nâng cao trong C #

Ví dụ trước cung cấp cho hoạt động tập tin đơn giản trong C #. Tuy nhiên, để sử dụng các quyền hạn  lớn hơn của lớp C # System.IO, bạn cần phải biết các tính chất và phương pháp của các lớp này thường được sử dụng.

(Phần  này mình sẽ giới thiệu chi tiết ở bài viết tiếp theo, các bạn nhớ theo dõi).

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

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