Bài giảng Ngôn ngữ lập trình nâng cao - Bài 4.1: Đọc, ghi tập tin - Nguyễn Xuân Hùng

Một lỗi logic xảy ra khi một ứng dụng dịch và chạy chính xác nhưng không đưa ra kết quả mong muốn. Các điều kiện ngoại lệ xuất hiện khi một hoạt động không thể hòa thành bình thường trong quá trình xử lý câu lệnh C# và các biểu thức

pdf25 trang | Chia sẻ: huongthu9 | Lượt xem: 407 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Bài giảng Ngôn ngữ lập trình nâng cao - Bài 4.1: Đọc, ghi tập tin - Nguyễn Xuân Hùng, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Slide 1 of 25Ver. 1.0 Object-Oriented Programming Using C# NGÔN NGỮ LẬP TRÌNH NÂNG CAO Slide 2 of 25Ver. 1.0 Object-Oriented Programming Using C# Trong phần này, chúng ta sẽ học: Thực thi đọc và ghi tập tin Thực thi đọc và ghi tập tin nhị phân Thực thi tập tin hệ thống Windows Miêu tả về ngoại lệ Mục tiêu Slide 3 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp Stream được sử dụng để đọc và ghi dữ liệu từ các tập tin. Nó là lớp abstract, hỗ trợ việc đọc ghi các byte vào nó. Nếu dữ liệu của tập tin chỉ có ký tự (text), chúng ta có thể sử dụng lớp StreamReader và lớp StreamWriter để thực thi hoạt động đọc và ghi. Thực thi đọc và ghi tập tin Slide 4 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp StreamReader được kế thừa từ lớp trừu tượng TextReader. Lớp TextReader đại diện cho việc đọc, có thể đọc một loạt các ký tự. Lớp StreamReader Slide 5 of 25Ver. 1.0 Object-Oriented Programming Using C# Bảng sau miêu tả một vài phương thức hay sử dụng của lớp StreamReader. Lớp StreamReader (tiếp) Phương thức Miêu tả Close Đóng đối tượng của lớp StreamReader và luồng cơ sở và thu hồi tài nguyên hệ thống liên quan tới việc đọc. Peek Trả về ký tự sẵn sàng tiếp theo nhưng không dùng di chuyển biến đọc Read Đọc ký tự tiếp theo hoặc tập ký tự tiếp theo từ luồng stream ReadLine Đọc dòng ký tự từ luồng stream hiện tại và trả về dữ liệu như một chuỗi Seek Cho phép vị trí đọc/ghi có thể di chuyển tới bất kỳ vị trí nào trong tập tin Slide 6 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp StreamWriter được kế thừa từ lớp trừ tượng TextWriter. Lớp TextWriter đại diện cho việc ghi, có thể ghi một loạt các ký tự. Bảng sau miêu tả một số phương thức thường dùng trong lớp StreamWriter. Lớp StreamWriter Phương thức Miêu tả Close Đóng đối tượng StreamWriter hiện tại và luồng chạy ngầm Flush Xóa toàn bộ bộ đệm cho việc ghi hiện tại Write Thực thi việc ghi vào luồng WriteLine Thực thi việc ghi vào luồng và đưa con trỏ xuống dòng tiếp theo Slide 7 of 25Ver. 1.0 Object-Oriented Programming Using C# Thực thi việc đọc và ghi trong tập tin nhị phân Trong C#, chúng ta có thể hiển thị trực tiếp nội dung của tập tin lên màn hình. Đọc và ghi nhị phân có nghĩa là một số được ghi như một số thực (float) tốn 4 byte trong không gian bộ nhớ. Lớp BinaryReader và BinaryWriter được sử dụng để đọc và ghi dữ liệu nhị phân vào tập tin. Slide 8 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp BinaryReader Lớp BinaryReader được sử dụng để đọc dữ liệu nhị phân từ tập tin. Bảng sau miêu tả một số phương thức thường sử dụng với lớp BinaryReader. Phương thức Miêu tả Close Đóng đối tượng đọc hiện tại và các luồng chạy ngầm Read Đọc ký tự từ luồng (stream) và đưa ra vị trí hiện tại của luồng Slide 9 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp BinaryWriter được sử dụng để ghi dữ liệu vào luồng. Bảng sau miêu tả một số phương thức thường sử dụng trong lớp BinaryWriter. Phương thức Miêu tả Close Đóng đối tượng BinaryWriter hiện tại và các luồng chạy ngầm Seek Thiết lập vị trí trong luồng hiện tại Write Ghi giá trị vào luồng hiện tại Flush Xóa toàn bộ dữ liệu trong bộ nhớ đệm Lớp BinaryWriter Slide 10 of 25Ver. 1.0 Object-Oriented Programming Using C# Thực thi hệ thống tập tin Windows Khả năng tìm kiếm và định vị tập tin và thư mục cho một thư mục cụ thể là cần thiết cho công việc lập trình. Sử dụng các lớp như là DirectoryInfo và FileInfo là một cách hiệu quả để tập hợp thông tin yêu cầu về tập tin và thư mục trong một vị trí cụ thể. Slide 11 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp DirectoryInfo Lớp DirectoryInfo được dẫn xuất từ lớp FileSystemInfo. Bảng sau miêu tả các thuộc tính thường sử dụng của lớp DirectoryInfo. Thuộc tính Miêu tả Attributes Thiết lập và thay đổi các thuộc tính liên quan tới tập tin hiện thời. Thuộc tính này kế thừa từ FileSystemInfo. CreationTime Thiết lập và thay đổi thời gian tạo tập tin hiện tại. Thuộc tính này kế thừa từ SystemInfo. Exists Trả về giá trị Boolean trong đó thư mục có tồn tại hay không. Extension Trả về một chuỗi chứa phần mở rộng. Thuộc tính này kế thừa từ FileSystemInfo. FullName Trả về một chuỗi chứa toàn bộ đường dẫn của thư mục. Thuộc tính này kế thừa từ FileSystemInfo. LastAccessTime Trả về lần cuối cùng truy cập vào thư mục. Thuộc tính này kế thừa từ FileSystemInfo. Name Trả về chuỗi tên của tập tin đưa ra. Slide 12 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp DirectoryInfo Bảng sau miêu tả một vài phương thức thường sử dụng trong lớp DirectoryInfo. Phương thức Miêu tả Create Tạo một thư mục. CreateSubdirectory Tạo một thư mục con. Delete Xóa một thư mục. GetDirectories Trả về thư mục trong thư mục hiện tại sau khi so sánh điều kiện. Nó cũng cho phép chúng ta tìm kiếm thư mục con trong thư mục hiện tại. GetFiles Trả về tập tin trong thư mục hiện tại. Slide 13 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp FileInfo Lớp FileInfo được dẫn xuất từ lớp FileSystemInfo. Bảng sau miêu tả một vài thuộc tính thường sử dụng trong lớp FileInfo. Thuộc tính Miêu tả Attributes Thiết lập và thay đổi thuộc tính liên quan tới tập tin hiện tại. Thuộc tính này kế thừa từ FileSystemInfo. CreationTime Thiết lập và thay đổi thời gian tạo tập tin hiện tại. Thuộc tính này kế thừa từ FileSystemInfo. Directory Trả về thư mục chứa tập tin. Exists Trả về giá trị Boolean chỉ ra tập tin có tồn tại hay không? Extension Trả về chuỗi chứa phần mở rộng của tập tin. Thuộc tính này kế thừa từ FileSystemInfo. FullName Trả về một chuỗi chứa toàn bộ đường dẫn của tập tin. Thuộc tính này kế thừa từ FileSystemInfo. LastAccessTime Trả về lần truy cập cuối cùng của tập tin. Thuộc tính này kế thừa từ FileSystemInfo. LastWriteTime Trả về lầm có hoạt động ghi cuối cùng vào tập tin. Thuộc tính này kế thừa từ FileSystemInfo. Length Trả về kích thước của tập tin Name Trả về chuỗi chứa tên của tập tin Slide 14 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp FileInfo (tiếp) Bảng sau miêu tả một vài phương thức thường sử dụng trong lớp FileInfo. Phương thức Miêu tả Create Tạo một tập tin AppendText Đính nội dung vào tập tin của đối tượng FileInfo. Delete Xóa tập tin Open Mở tập tin OpenRead Mở tập tin với hình thức chỉ đọc Slide 15 of 25Ver. 1.0 Object-Oriented Programming Using C# Một ngoại lệ là một tình huống lỗi không mong muốn xảy ra trong quá trình chạy chương trình. Khi một ngoại lệ xảy ra trong ứng dụng, hệ thống đưa ra một lỗi. Lỗi được xử lý thông qua quá trình xử lý ngoại lệ. Miêu tả ngoại lệ (Exception) Slide 16 of 25Ver. 1.0 Object-Oriented Programming Using C# Có ba kiểu lỗi có thể xảy ra trong ứng dụng: Lỗi cú pháp: Xảy ra khi câu lệnh xây dựng không chính xác, từ khóa không đúng, thiếu dấu chấm câu. Lỗi thời gian chạy: xảy ra khi một ứng dụng cố gắng thực thi một hoạt động không được phép trong khi chạy. Lỗi logic: xảy ra khi một ứng dụng dịch và chạy chính xác nhưng không đưa ra kết quả mong muốn. Chúng ta tìm hiểu chi tiết về các kiểu lỗi. Các kiểu lỗi Slide 17 of 25Ver. 1.0 Object-Oriented Programming Using C# class Errors { Console.WriteLine(“Enjoy Errors”) } Thiết dấu chấm câu trong câu lệnh Console.WriteLine Các lỗi cú pháp Slide 18 of 25Ver. 1.0 Object-Oriented Programming Using C# class Errors { int Num1=0; int Num2=20; int Num3; Num3=Num2/Num1; Console.WriteLine(“The Result is {0}”, Num3); } Phép chia cho 0 Lỗi thời gian chạy Slide 19 of 25Ver. 1.0 Object-Oriented Programming Using C# class Errors { int Num1=10; int Num2=2; int Num3; Num3=Num2/Num1; Console.WriteLine(“The Result is {0}”, Num3); } Kết quả mong muốn = 5 Kết quả đầu ra = 0.2 Lỗi logic Slide 20 of 25Ver. 1.0 Object-Oriented Programming Using C# Có nhiều lớp ngoại lệ được dẫn xuất trực tiếp hoặc gián tiếp từ lớp System.Exception. Một vài lớp đó là: Lớp System.ApplicationException Lớp System.SystemException Lớp Exception Slide 21 of 25Ver. 1.0 Object-Oriented Programming Using C# Kiến trúc của lớp ngoại lệ (exception) được mô tả như sau. Lớp Exception (tiếp) System.Exception System.ApplicationException System.SystemException Slide 22 of 25Ver. 1.0 Object-Oriented Programming Using C# System.SystemException hoạt động như một lớp cơ sở cho tất cả ngoại lệ hệ thống được xác định trước. Bảng sau miêu tả một vài lớp dẫn xuất từ lớp System.SystemException. Lớp Exception (tiếp) Lớp Exception Miêu tả System.IO.IOException Xử lý lỗi I/O System.IndexOutOfRangeException Xử lý lỗi sinh ra khi một phương thức liên quan tới các thành phần của mảng mà vượt quá phạm vi của nó System.NullReferenceException Xử lý lỗi sinh ra trong quá trình xứ lý đối tượng rỗng (null) System.DivideByZeroException Xử lý lỗi sinh ra trong quá trình xử lý phép chia cho 0 System.InvalidCastException Xử lý lỗi sinh ra trong quá trình ép kiểu System.OutOfMemoryException Xử lý khởi tạo bộ nhớ cho ứng dụng bị lỗi Slide 23 of 25Ver. 1.0 Object-Oriented Programming Using C# Trong mục này, chúng ta đã học: Lớp Stream được sử dụng để đọc và ghi dữ liệu vào tập tin . Nó là một lớp trừu tượng hỗ trợ việc đọc và ghi byte. Lớp StreamReader kế thừa từ lớp trừu tượng TextReader. Lớp TextReader đại diện cho việc đọc và có thể đọc một loạt ký tự. Lớp StreamWriter kế thừa từ lớp trừu tượng TextWriter. Lớp TextWriter trình bày việc ghi và có thể ghi một loạt ký tự. Lớp BinaryReader cho phép đọc dữ liệu nhị phân vào tập tin. Lớp BinaryWriter cho phép ghi dữ liệu nhị phân vào luồng. Tổng kết Slide 24 of 25Ver. 1.0 Object-Oriented Programming Using C# Lớp DirectoryInfo được dẫn xuất từ lớp FileSystemInfo và nó làm việc trên một thư mục chỉ định và chỉ ra đường dẫn đầy đủ của thư mục hiện tại. Lớp FileInfo được dẫn xuất từ lớp FileSystemInfo và nó làm việc trên thư mục chỉ định và hiển thị danh sách của tất cả tập tin. Một ngoại lệ là một tình huống không đúng xảy ra trong khi thực thi chương trình Lỗi cú pháp xảy ra khi trình biên dịch không thể dịch mã. Điều này có thể xảy ra khi câu lệnh xây dựng không chính xác, từ khóa lỗi hoặc dấu câu không đúng. Lỗi thời gian chay xảy ra khi một ứng dụng cố gắng thực thi một hoạt động không được phép. Tổng kết (tiếp) Slide 25 of 25Ver. 1.0 Object-Oriented Programming Using C# Một lỗi logic xảy ra khi một ứng dụng dịch và chạy chính xác nhưng không đưa ra kết quả mong muốn. Các điều kiện ngoại lệ xuất hiện khi một hoạt động không thể hòa thành bình thường trong quá trình xử lý câu lệnh C# và các biểu thức. Tổng kết (tiếp)

Các file đính kèm theo tài liệu này:

  • pdfbai_giang_ngon_ngu_lap_trinh_nang_cao_bai_4_1_doc_ghi_tap_ti.pdf