Bài giảng Lập trình Windows - Chương 11: 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..

ppt50 trang | Chia sẻ: candy98 | Lượt xem: 477 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Lập trình Windows - Chương 11: Streams & Files, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Streams & Files#1 - System.IO NamespaceExplain the need for files and streamsDescribe the System namespace and its significanceFiles & StreamsFile 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ệuCung 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 tinBước 2: Thiết lập một luồng ghi hay đọc từ tập tinBước 3: Đọc hay ghi dữ liệu lên tập tinBướ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 tinAppendText: 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 tinCreateText: 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 FileStreamOpenRead: Mở một tập tin để đọcOpenText: 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.IOCác lớp StreamBufferedStreamThêm buffer vào các stream khác với mục đích tăng hiệu quả đọc/ghi dữ liệuFileStreamHổ trợ việc truy xuất FileCryptoStreamDùng mã hóa dữ liệu trên FileNetworkStreamDùng đọc/ghi dữ liệu qua mạng 9Access Text FileLÀ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.10Các Thành Viên Của Lớp StreamWriterTênÝ NghĩaClose()Đóng write, giải phóng mọi tài nguyên đã bị chiếm dụng.Flush()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.NewLineSang dòng mới(tương đương “\r\n”)Write()Viết một dòng lên text stream.WriteLine()Viết một dòng lên text stream và sang dòng mới11Các Thành Viên Của Lớp StreamReaderTênÝ NghĩaPeek()Trả về ký tự kế tiếp của reader.Read()Đọc dữ liệu từ 1 input stream.ReadBlock()Đọc 1 số tối đa ký tự đếm được từ stream hiện hành rồi cho viết lên buffer.ReadLine()Đọc 1 dòng ký tự, chuỗi null cho biết là EOFReadToEnd()Đọc tất cả ký tự từ vị trí hiện hành cho tới cuối chuỗi.12Sequential-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 );13Creating 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 ); 14Creating 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);}15Reading 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 ); Phương thức của “BinaryWriter“ Giá trị của FileModeGiá trị Định nghĩaAppend: Mở một tập tin hiện hữu hoặc tạo một tập tin mớiCreate: 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.CreateNew: 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.Open: Mở tập tin hiện hữu.OpenOrCreate: Mở tập tin hay tạo tập tin mới nếu tập tin chưa tồn tạiTruncate: 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ừ fileConstructor 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ựStreamWriter và StringWriter là hai lớp thừa kế từ lớp TextWriter.Phương thức"TextWriter" classVí dụ"TextWriter & StreamWriter” Lớp "TextReader" Lớp trừu trượng của StreamReader và StringReader, dùng để đọc dữ liệu ký tự và chuỗiPhương thức của "TextReader" Ví dụ "TextReader & StreamReader" Lớp "File" Cung cấp các phương thức static dùng để tạo, sao chép, xóa, di chuyển, mở file.. Kiểm tra bảo mật trước khi thao tácPhương thức của lớp "File" Phương thức của lớp "File" Phương thức của lớp "File" Ví dụVí dụ//path là file source, path2 là destinationLớp "Filelnfo" Sử dụng giống như lớp File, tuy nhiên các phương thức không phải static, không kiểm tra bảo mật trước khi thao tácPhương thức của "Filelnfo" Ví dụVí dụLớp "Directory" Hỗ trợ việc tổ chức các file.Cung cấp các phương thức static dùng để tạo, sao chép, xóa, di chuyển, liệt kê các thư mục..Các phương thức của Directory luôn kiểm tra bảo mật trước khi thực hiện.Phương thức của "Directory" Ví dụLớp "Directorylnfo" Sử dụng giống như lớp Directory, tuy nhiên các phương thức không phải static, không kiểm tra bảo mật trước khi thao tácPhương thức của "Directorylnfo" Ví dụGhi Đọc đối tượng (Serialize & DeSerialize)Lớp của đối tượng muốn ghi lên file phải có Attribute:[Serializable]Sử dụng phương thức Serialize & DeSerialize của đối tượng BinaryFormatter để ghi/đọc dữ liệuVí dụVí dụThat’s about all for today!System.IO NamespaceStream HandlingFile HandlingDirectory classDirectorylnfo classThank you all for your attention and patient !