Ở topic trước mình đã giới thiệu với các bạn các hoạt động cơ bản trên tập tin,chúng ta sẽ tiếp tục phần này với những tính chất và phương thức của lớp System.IO thường được sử dụng.
Các chủ đề chính:
- Đọc từ và viết vào tập tin văn bản
Nó liên quan đến việc đọc và ghi vào tập tin văn bản. Lớp StreamReader và StreamWriter giúp thực hiện điều này.
- Đọc từ và viết vào tập tin nhị phân
Nó liên quan đến việc đọc và ghi vào tập tin nhị phân. Các lớp BinaryReader và BinaryWriter lớp giúp thực hiện điều này.
- Thao tác với hệ thống file Windows
Nó cho một C # programamer có khả năng duyệt và xác định vị trí tập tin Windows và thư mục.
Topic này trình bày chủ đề 1, hai chủ đề còn lại sẽ trình bài ở bài sau.
Đọc và viết trên tập tin văn bản
Lớp StreamReader và StreamWriter được sử dụng để đọc và ghi dữ liệu vào tập tin văn bản. Những lớp này kế thừa từ lớp trừu tượng cơ sở Stream, hỗ trợ đọc và viết byte vào một dòng tập tin.
Lớp StreamReader
Lớp StreamReader cũng kế thừa từ lớp trừu tượng cơ sở TextReader để đọc hàng loạt các ký tự. Bảng dưới đây mô tả một số phương pháp thường được sử dụng của lớp StreamReader:
STT | Phương thức |
1 | public override void Close()
Nó đóng đối tượng StreamReader và dòng tin, và giả phóng tài nguyên hệ thống liên kết với công cụ đọc. |
2 | public override int Peek()
Trả về ký tự có sẵn kế tiếp nhưng không tiêu hủy nó. |
3 | public override int Read()
Đọc các ký tự từ các dòng đầu vào và đi qua từng ký tự. |
Thí dụ
Ví dụ sau đây chứng tỏ đọc một tập tin văn bản có tên Jamaica.txt. File được đọc là:
Xuống con đường nơi màn đêm là bóng tối Và mặt trời chiếu sáng hàng ngày trên đỉnh núi Tôi lấy một chuyến đi trên một con thuyền buồm Và khi tôi đến Jamaica Tôi đã dừng lại
using System; using System.IO; namespace FileApplication { class Program { static void Main(string[] args) { try { // Tạo một thể hiện của StreamReader để đọc từ một tập tin. // Những câu lệnh làm đóng StreamReader. using (StreamReader sr = new StreamReader("c:/jamaica.txt")) { string line; // Đọc và hiển thị các dòng từ tập tin // Kết thúc tập tin while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } } catch (Exception e) { // Để cho người dùng biết những gì đã bị sai. Console.WriteLine("File không thể đọc: "); Console.WriteLine(e.Message); } Console.ReadKey(); } } }
Hãy đoán xem nó sẽ hiển thị gì khi bạn biên dịch và thực thi chương trình!
Lớp StreamWriter
Lớp StreamWriter kế thừa từ lớp TextWriter, nó có thể viết một loạt các ký tự.
Bảng dưới đây mô tả các phương thứuc thường được sử dụng nhất của lớp này:
STT | Phương thức |
1 | public override void Close()
Đóng đối tượng StreamWriter hiện tại và dòng cơ bản. |
2 | public override void Flush()
Xóa tất cả các bộ đệm hiện tại và làm cho dữ liệu trên Buffered phải được ghi vào dòng cơ bản. |
3 | public virtual void Write(bool value)
Viết biểu diễn dạng văn bản của một giá trị Boolean bằng chuỗi hoặc dòng văn bản. (Kế thừa từ TextWriter.) |
4 | public override void Write(char value)
Ghi một ký tự lên dòng. |
5 | public virtual void Write(decimal value)
Viết biểu diễn văn bản của một giá trị thập phân bằng chuỗi hoặc dòng văn bản. |
6 | public virtual void Write(double value)
Viết biểu diễn văn bản của một giá trị số nguyên(8 byte) bằng chuỗi hoặc dòng văn bản. |
7 | public virtual void Write(int value)
Viết biểu diễn văn bản của một giá trị số nguyên(4 byte) bằng chuỗi hoặc dòng văn bản. |
8 | public override void Write(string value)
Ghi một dòng chuỗi. |
9 | public virtual void WriteLine()
Viết một chuỗi hoặc dòng văn bản. |
Ví dụ
Ví dụ dưới đây trình bày việc ghi dữ liệu văn bản thành một file bằng lớp StreamWriter:
using System; using System.IO; namespace FileApplication { class Program { static void Main(string[] args) { string[] names = new string[] {"AHIHI", "DO NGOC"}; //TAO MANG 2 STRING using (StreamWriter sw = new StreamWriter("names.txt")) { foreach (string s in names) { sw.WriteLine(s); } } // Đọc và hiển thị mỗi dòng từ tập tin. string line = ""; using (StreamReader sr = new StreamReader("names.txt")) { while ((line = sr.ReadLine()) != null) { Console.WriteLine(line); } } 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:
AHIHI DO NGOC
Chúc bạn thành công !