Bài giảng Lập trình giao diện: Chương 7 Làm việc với File và Thư mục, với mục tiêu giúp các bạn có thể tạo, đọc, ghi và cập nhật được file; Sử dụng được lớp File và Directory để truy xuất được thông tin về file và thư mục lưu trữ trên máy tính; Thao tác thành thạo khi truy cập file tuần tự; Sử dụng được các lớp FileStream, StreamReader, StreamWriter để đọc và ghi file text.
08/07/2020 LẬP TRÌNH GIAO DIỆN Nguyễn Thị Mai Trang Nguyễn Thị Mai Trang 1 Chương Làm việc với File Thư mục 08/07/2020 MỤC TIÊU • Tạo, đọc, ghi cập nhật file • Sử dụng lớp File Directory để truy xuất thông tin file thư mục lưu trữ máy tính • Thao tác thành thạo truy cập file • Sử dụng lớp FileStream, StreamReader, StreamWriter để đọc ghi file text • Sử dụng lớp FileStream BinaryFormater để đọc ghi đối tượng vào file Nguyễn Thị Mai Trang 3 NỘI DUNG Lớp File, Directory Stream Làm việc với file thư mục Serialization Nguyễn Thị Mai Trang 4 08/07/2020 7.1 Lớp File, Directory Stream • Giới thiệu • Lớp File • Lớp Directory Nguyễn Thị Mai Trang 5 Giới thiệu • Khi muốn đọc hay ghi liệu vào/ra tập tin hay muốn truyền liệu từ máy sang máy khác, ta phải tổ chức liệu theo cấu trúc byte hay gói tin … • Thư viện NET Framework cung cấp lớp Stream (và lớp kế thừa) để chương trình sử dụng thao tác nhập xuất liệu đọc/ghi tập tin, truyền liệu qua mạng,… • Trong C#, để sử dụng lớp, đối tượng thao tác với file thư mục, cần khai báo không gian tên System.IO Nguyễn Thị Mai Trang 6 08/07/2020 Giới thiệu (tt) • Một số lớp Stream thông dụng: – Stream: Lớp trừu tượng, cung cấp chức đọc/ghi liệu theo byte – BinaryReader: Đọc liệu nhị phân – BinaryWriter: Ghi liệu nhị phân – File, FileInfo, Directory, DirectoryInfo: cung cấp phương thức cho phép thao tác với tập tin thư mục tạo, xóa, đổi tên, liệt kê file thư mục, – FileStream: Đọc/ ghi tập tin theo chế đồng / bất đồng bộ, mặc định đồng – TextReader, TextWriter: lớp trừu tượng cho phép đọc, ghi ký tự – StringReader, StringWriter: kế thừa từ TextReader, TextWriter, cài đặt thêm phương thức đọc, ghi chuỗi Nguyễn Thị Mai Trang 7 Lớp File • Một số phương thức static class File: – AppentText: ghi nội dung văn vào cuối file – Copy: chép file – CreateText: tạo file văn – Delete: Xóa file – Exists: kiểm tra tồn file – GetCreationTime: trả đối tượng DateTime thời điểm file tạo – GetLastAccessTime: trả đối tượng DateTime lần cuối truy cập file Nguyễn Thị Mai Trang 8 08/07/2020 Lớp File (tt) • Một số phương thức static class File (tt): – GetLastWriteTime: trả đối tượng DateTime lần cuối cập nhật nội dung file – Move: di chuyển file – Open: mở file – OpenRead: mở file để đọc – OpenText: mở file văn – OpenWrite: mở file để ghi Nguyễn Thị Mai Trang 9 Lớp Directory • Một số phương thức class Directory: – CreateDirectory: tạo thư mục – Delete: Xóa thư mục – Exists: kiểm tra tồn thư mục – GetCreationTime: trả đối tượng DateTime thời điểm thư mục tạo – GetLastAccessTime: trả đối tượng DateTime lần cuối truy cập thư mục – GetLastWriteTime: trả đối tượng DateTime lần cuối cập nhật nội dung thư mục – Move: di chuyển thư mục Nguyễn Thị Mai Trang 10 10 08/07/2020 7.2 Làm việc với file thư mục • Đọc, ghi tập tin nhị phân – Sử dụng lớp sở Stream Lớp Stream có nhiều phương thức quan trọng phương thức Read(), Write(), BeginRead(), BeginWrite() Flush() – Cách thực sau: • Tạo đối tượng Stream để đọc ghi • Sử dụng phương thức File.OpenRead để đọc File.OpenWrite để ghi vào file • Đọc, ghi tập tin văn bản: – Sử dụng hai lớp StreamReader, StreamWriter • StreamReader: đọc tập tin với hàm Read, ReadLine • StreamWriter: ghi vào tập tìn với hàm Write, WriteLine Nguyễn Thị Mai Trang 11 11 Làm việc với file thư mục (tt) • Tạo, xóa, di chuyển file: sử dụng phương thức static lớp File: – File.Create ( "file_name" ); – File.Delete ( "file_name" ); – File.Move ( "source_file" , "dest_file" ) • Tạo, xóa, di chuyển thư mục: sử dụng phương thức static lớp Directory: – Directory.CreateDirectory ( "dir_name" ); – Directory.Delete ( "dir_name" ); – Directory.Move ( "source_dir" , "dest_dir") Nguyễn Thị Mai Trang 12 12 08/07/2020 Làm việc với file thư mục (tt) • Truy xuất thơng tin file: sử dụng phương thức static lớp File: – File.GetCreationTime ("file_name"); – File.GetLastAccessTime ("file_name"); – File.GetAttributes ("file_name"); – File GetLastWriteTime ( "file_name"); • Truy xuất thơng tin thư mục: sử dụng phương thức static lớp Directory – Directory.GetCreationTime("dir_name"); – Directory.GetLastAccessTime("dir_name"); – Directory.GetAttributes("dir_name"); – Directory.GetLastWriteTime( "dir_name" ); Nguyễn Thị Mai Trang 13 13 Làm việc với file thư mục (tt) • Liệt kê file thư mục thư mục: sử dụng phương thức static lớp Directory – Directory.GetFiles ("dir_name"); – Directory.GetDirectories ("dir_name"); Nguyễn Thị Mai Trang 14 14 08/07/2020 Làm việc với file thư mục (tt) • Ví dụ: nhập đường dẫn ổ đĩa/thư mục, enter, danh sách tập tin thư mục ổ đĩa hiển thị textbox bên (xem tài liệu học tập Lập trình giao diện) Nguyễn Thị Mai Trang 15 15 7.3 Serialization • Serialization – Là trình chuyển đổi cấu trúc liệu đối tượng thành định dạng lưu trữ vào file, nhớ, vận chuyển thơng qua mạng – Ví dụ: tạo đối tượng hình trịn, vẽ giao diện chương trình, sau lưu thành file • Deserialization: – Q trình phục hồi liệu lưu file trở lại trạng thái ban đầu – Ví dụ: đọc file lưu đối tượng hình trịn trước đó, vẽ lại giao diện Nguyễn Thị Mai Trang 16 16 08/07/2020 Serialization (tt) Nguyễn Thị Mai Trang 17 17 Serialization (tt) • NET Framework cung cấp kỹ thuật serialize: – Binary serialize (serialize nhị phân): • Giữ nguyên kiểu liệu giữ nguyên cấu trúc đối tượng • Được dùng để chia sẻ đối tượng ứng dụng cách serialize vào vùng nhớ clipboard; serialize vào luồng, đĩa từ, nhớ, mạng …; truyền cho máy tính khác mạng – XML SOAP Serialize: • Chỉ serialize trường liệu public không giữ nguyên kiểu liệu • XML SOAP thường sử dụng việc truyền liệu từ dịch vụ web service Nguyễn Thị Mai Trang 18 18 08/07/2020 Serialization (tt) • Các đối tượng sở có khả serialize • Đối với đối tượng người sử dụng định nghĩa đặt khai báo lớp thị [Serialize] • Muốn loại trừ thành phần (phương thức, biến thành viên, thuộc tính,…) khơng muốn serialize ta đặt trước khai báo thị [NonSerialize] • Để serialize đối tượng lớp sử dụng đối tượng Formatter NET thực thi interface IFormatter (namespace System.Runtime.Serialization) Nguyễn Thị Mai Trang 19 19 Serialization (tt) • Các đối tượng sử dụng để serialize Net: – BinaryFormatter: serialize đối tượng thành tập tin nhị phân, thuộc namespace System.Runtime.Serialization.Formatters.Binary – SoapFormatter: serialize đối tượng thành định dạng XML để truyền tải thông tin ứng dụng qua mạng thơng qua giao thức HTTP, thuộc namespace System.Runtime.Serialization.Formatters.Soap • Interface IFormatter có hai phương thức Serialize() Deserialize() Nguyễn Thị Mai Trang 20 20 10 08/07/2020 Serialization (tt) • Các bước Serialization: – Thiết kế lớp khả (khai báo[Serialize] khai báo lớp) – Khai báo namespace cần thiết • using System.IO; • using System.Runtime.Serialization; • using System.Runtime.Serialization.Formatters.Binary; – Tạo đối tượng stream • FileStream stream = new FileStream(“filename", FileMode.Create, FileAccess.Write); – Tạo đối tượng BinaryFormatter • BinaryFormatter bf = new BinaryFormatter(); – Gọi phương thức Serialize • bf.Serialize(stream, objclass); Nguyễn Thị Mai Trang 21 21 Serialization (tt) • Các bước Deserialization: – Khai báo namespace cần thiết • using System.IO; • using System.Runtime.Serialization; • using System.Runtime.Serialization.Formatters.Binary; – Tạo đối tượng stream • FileStream stream = new FileStream(“filename", FileMode.Open,FileAccess.Read); – Tạo đối tượng BinaryFormatter • BinaryFormatter bf = new BinaryFormatter(); – Gọi phương thức Deserialize • objclass = (objclass) bf Deserialize(stream); Nguyễn Thị Mai Trang 22 22 11 ... file lưu đối tượng hình trịn trước đó, vẽ lại giao diện Nguyễn Thị Mai Trang 16 16 08/ 07/ 2020 Serialization (tt) Nguyễn Thị Mai Trang 17 17 Serialization (tt) • NET Framework cung cấp kỹ thuật... để đọc ghi đối tượng vào file Nguyễn Thị Mai Trang 3 NỘI DUNG Lớp File, Directory Stream Làm việc với file thư mục Serialization Nguyễn Thị Mai Trang 4 08/ 07/ 2020 7. 1 Lớp File, Directory Stream... ổ đĩa hiển thị textbox bên (xem tài liệu học tập Lập trình giao diện) Nguyễn Thị Mai Trang 15 15 7. 3 Serialization • Serialization – Là q trình chuyển đổi cấu trúc liệu đối tượng thành định dạng