Streams & Files #1 ­ System.IO Namespace Explain the need for files and streams Describe the System namespace and its significance Files & Streams File thường dùng dể nói đến thông tin lưu trữ trên đĩa. Stream: Dòng thông tin. Stream: Dùng để gửi, nhận thông tin từ bộ nhớ, mạng.. "System.IO" Chứa các lớp cho hỗ trợ đọc/ghi dữ liệu Cung cấp các lớp cho phép thao tác trên tập tin, thư mục. "System.IO" Các bước cơ bản để làm việc với một tậo tin là: Bước 1: Mở hay tạo mới tập tin Bước 2: Thiết lập một luồng ghi hay đọc từ tập tin Bước 3: Đọc hay ghi dữ liệu lên tập tin Bước 4: Đóng lập tin lại "System.IO" Các phương thức cho việc tạo và mở tập tin AppendText: Mở một tập tin để thêm và tập tin này có thể được thêm văn bản vào trong nó. Tạo luồng StreamWriter sử dụng để thêm vào trong văn bản. Create: Tạo mới một tập tin CreateText: Tạo và mở một tập tin văn bản. Tạo ra một luồng StreamWriter. Open: Mở một tập tin để đọc/viết. Mở một FileStream OpenRead: Mở một tập tin để đọc OpenText: Mở một tập tin văn bản để đọc. Tạo ra StreamReader để sử dụng. OpenWrite: Mở một tập tin cho việc đọc và ghi. Các Lớp và Giao diện trong System.IO Các lớp Stream BufferedStream Thêm buffer vào các stream khác với mục đích tăng hiệu quả đọc/ghi dữ liệu FileStream Hổ trợ việc truy xuất File CryptoStream Dùng mã hóa dữ liệu trên File NetworkStream Dùng đọc/ghi dữ liệu qua mạng Access Text File LÀM VIỆC VỚI NHỮNG TẬP TIN VĂN BẢN Để làm việc với tập tin văn bản (đọc/ghi) ta cần sử dụng đến các lớp StreamReader và StreamWriter. Cả 2 lớp này, theo mặt định đều làm việc với ký tự Unicode. 9 Các Thành Viên Của Lớp StreamWriter Tên Close() Flush() NewLine Write() WriteLine() Ý Nghĩa Đóng write, giải phóng mọi tài nguyên đã bị chiếm dụng. Giải phóng buffer đối với write hiện hành, cho ghi lên đĩa tất cả dữ liệu còn sót lại trên buffer. Sang dòng mới(tương đương “\r\n”) Viết một dòng lên text stream. Viết một dòng lên text stream và sang dòng mới 10 Các Thành Viên Của Lớp StreamReader Tên Peek() Read() ReadBlock() ReadLine() ReadToEnd() Ý Nghĩa Trả về ký tự kế tiếp của reader. Đọc dữ liệu từ 1 input stream. Đọc 1 số tối đa ký tự đếm được từ stream hiện hành rồi cho viết lên buffer. Đọc 1 dòng ký tự, chuỗi null cho biết là EOF Đọc tất cả ký tự từ vị trí hiện hành cho tới cuối chuỗi. 11 Sequential­Access Text File Đọc và viết dữ liệu thông qua lớp Stream. Stream nghĩa là dòng dữ liệu chảy đi. Lớp FileStream: cho phép mở những tập tin đã có cũng như tạo mới tập tin. FileStream thường dùng những enum FileMode, FileAccess, FileShare. FileStream output = new FileStream( fileName,, FileMode.OpenOrCreate,, FileAccess.Write ); 12 Creating and writting a Sequential­Access File (p 659) Figure 18.9 (TẠO VÀ GHI FILE) 1. using System.IO; 2. // writes data to text file private StreamWriter fileWriter; // maintains connection to file private FileStream output; 3. // open file with write access output = new FileStream( fileName, FileMode.OpenOrCreate, FileAccess.Write ); // sets file to where data is written fileWriter = new StreamWriter( output ); 13 Creating and writting a Sequential­Access File (p 661) if (accountNumber > 0) { record.Account = accountNumber; record.FirstName = txtFirstName.Text; record.LastName = txtLastName.Text; record.Balance = Convert.ToDecimal(txtBalance.Text); // write Record to file, fields separated by commas fileWrite.WriteLine(record.Account + " ," + record.FirstName + " ," + record.LastName + " ," + record.Balance); } 14 Reading sequential­access files ĐỌC FILE: private FileStream input; private StreamReader fileReader; // create FileStream input = new FileStream( fileName, FileMode.Open, FileAccess.Read ); // set file from where data is read fileReader = new StreamReader( input ); 15 Phương thức của “BinaryWriter“ Giá trị của 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 đã có, 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ó. Lớp “BinaryWriter" Dùng để ghi dữ liệu cơ bản (char, int, float, double..) lên Stream. Constructor của “BinaryWriter" Phương thức của “BinaryWriter“ Ví dụ Lớp “BinaryReader" Đọc dữ liệu nhị phân từ file Constructor của “BinaryReader" Phương thức của “BinaryReader" Ví dụ “BinaryReader" Lớp "TextWriter" Lớp trừu tượng cho các lớp dùng để ghi dữ liệu ký tự