85
TRƯỜNG ĐẠI HC KHOA HC TNHIÊN TP.HCM TRUNG TÂM TIN HC 1

Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

Embed Size (px)

Citation preview

Page 1: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

1

Page 2: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài 7: Xử lý nhập/xuất dữ liệu

• Khái niệm về các loại tập tin• Xử lý hệ thống tập tin và thư mục qua các lớp• Xử lý đọc ghi tập tinXử lý đọc ghi tập tin

2

- 8 tiết -

Page 3: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khái niệm về các loại tập tinố ể ể ố ể• Đối với các kiểu dữ liệu như kiểu số, kiểu

mảng, kiểu cấu trúc… thì dữ liệu được tổ chức trong bộ nhớ trong (RAM) của máy tính nên khitrong bộ nhớ trong (RAM) của máy tính nên khi kết thúc việc thực hiện chương trình thì dữ liệu cũng bị mất

• Để giải quyết vấn đề, người ta đưa ra kiểu tập tin (file) cho phép lưu trữ dữ liệu ở bộ nhớ

ài (đĩ ) Khi kết thú h t ì h thì dữngoài (đĩa). Khi kết thúc chương trình thì dữ liệu vẫn còn do đó chúng ta có thể sử dụng nhiều lần.

3

nhiều lần.

Page 4: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khái niệm về các loại tập tinể• Có 3 loại dữ liệu kiểu tập tin:

− Tập tin văn bản (Text File) − Tập tin định kiểu (Typed File) − Tập tin không định kiểu (Untyped File)

4

Page 5: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khái niệm về các loại tập tin• Tập tin văn bản (Text File):− Là loại tập tin dùng để ghi các ký tự lên đĩa, các ký tự

này được lưu trữ dưới dạng mã Asciinày được lưu trữ dưới dạng mã Ascii.

− Điểm đặc biệt là dữ liệu của tập tin được lưu trữ thành các dòng, mỗi dòng được kết thúc bằng ký tự xuốngcác dòng, mỗi dòng được kết thúc bằng ký tự xuống dòng (new line), ký hiệu ‘\n’; ký tự này là sự kết hợp của 2 ký tự CR (Carriage Return - Về đầu dòng, mã Ascii là 13) và LF (Line Feed - Xuống dòng, mã Ascii là 10)13) và LF (Line Feed Xuống dòng, mã Ascii là 10)

− Mỗi tập tin được kết thúc bởi ký tự EOF (End Of File) có mã Ascii là 26

5

− Tập tin văn bản chỉ có thể truy xuất theo kiểu tuần tự.

Page 6: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khái niệm về các loại tập tinể• Tập tin định kiểu (Typed File)

− Là loại tập tin bao gồm nhiều phần tử có cùng kiểu: char int long cấu trúc và được lưu trữ trên đĩa dướichar, int, long, cấu trúc… và được lưu trữ trên đĩa dưới dạng một chuỗi các byte liên tục.

• Tập tin không định kiểu (Untyped File)Tập tin không định kiểu (Untyped File)− Là loại tập tin mà dữ liệu của chúng bao gồm các cấu

trúc dữ liệu nhưng người dùng không quan tâm đến nội ệ g g g g q ộdung hoặc kiểu của nó mà chỉ lưu ý đến các yếu tố vật lý của tập tin như độ lớn và các yếu tố tác động lên tập tin mà thôi.

6

Page 7: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khái niệm về các loại tập tin• C t ỏ tậ ti• Con trỏ tập tin: − Khi một tập tin được mở ra để làm việc, tại mỗi thời

điểm, sẽ có một vị trí của tập tin mà tại đó việc đọc/ghiđiểm, sẽ có một vị trí của tập tin mà tại đó việc đọc/ghithông tin sẽ xảy ra. Người ta hình dung có một con trỏđang chỉ đến vị trí đó và đặt tên nó là con trỏ tập tin.

− Sau khi đọc/ghi xong dữ liệu con trỏ sẽ chuyển dịch− Sau khi đọc/ghi xong dữ liệu, con trỏ sẽ chuyển dịch thêm một phần tử về phía cuối tập tin. Sau phần tử dữ liệu cuối cùng của tập tin là dấu kết thúc tập tin EOF (End Of File).(End Of File).

7

Page 8: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Khái niệm về các loại tập tin• Biế tậ ti• Biến tập tin: − Là một biến thuộc kiểu dữ liệu tập tin dùng để đại diện

cho một tập tin. Dữ liệu chứa trong một tập tin được truycho một tập tin. Dữ liệu chứa trong một tập tin được truy xuất qua các thao tác với thông số là biến tập tin đại diện cho tập tin đó.

8

Page 9: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài 7: Xử lý nhập/xuất dữ liệu

• Khái niệm về các loại tập tin• Xử lý hệ thống tập tin và thư mục qua các lớp• Xử lý đọc ghi tập tinXử lý đọc ghi tập tin

9

Page 10: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý hệ thống tập tin và thư mục

• FileSystemInfo• FileInfoFileInfo• DirectoryInfo• DriveInfo• Path• FileSystemWatcher

10

Page 11: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các lớp hệ thống tập tin

• Bên trong namespace có tên System.IO là một tập hợp các class được sử dụng để định vị và

ếthao tác các tập tin, thư mục và thiết bị. Các class hệ thống tập tin được chia thành 2 loại class: informational và utilityclass: informational và utility.

• Hầu hết các class loại informational dẫn xuất từ l ở Fil S I f Cá l àclass cơ sở FileSystemInfo. Các class này

trưng tất cả thông tin hệ thống liên quân các đối tượng hệ thống tập tin Đó là các class có tên

11

tượng hệ thống tập tin. Đó là các class có tên FileInfo và DirectoryInfo.

Page 12: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Các lớp hệ thống tập tin• Ngoài ra, class DriveInfo trình bày thiết bị trong hệ

thống tập tin, mặc dù nó vẫn là một class thuộc loại informational, tuy nhiên nó không dẫn xuất từinformational, tuy nhiên nó không dẫn xuất từ FileSystemInfo bởi lẽ nó không chia sẻ các kiểu hành vi chung (ví dụ, bạn có thể xóa các tập tin và thư mục, nhưng không thể xóa các thiết bị)nhưng không thể xóa các thiết bị).

• Các class loại utility cung cấp các phương thức static (hoặc phương thức shared trong Visual Basic) để thực(hoặc phương thức shared trong Visual Basic) để thực thi một số hoật động trên các đối tượng hệ thống tập tin như các tập tin, thư mục và hệ thống tập tin đường dẫn ( th ) Cá l l i tilit b ồ á l Fil

12

(paths). Các class loại utility bao gồm các class : File, Directory, và Path

Page 13: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemInfo Class• FileSystemInfo cung cấp các chức năng cơ bản cho tất

cả các lớp xử lý hệ thống tập tin và thư mục• Bảng các thuộc tính chính của FileSystemInfo• Bảng các thuộc tính chính của FileSystemInfo

Thuộc tính Ý nghĩa

Attributes Gán hoặc lấy giá trị các thuộc tính của tập tin hay thư mục hiện hành.

CreationTime Gán hoặc lấy giá trị về thời gian tạo lập của tập tin CreationTime ặ y g ị g ạ ập ậphay thư mục.

Exists Kiểm tra tập tin hay thư mục có tồn tại hay không.

13

Extension Lấy thông tin phần mở rộng (kiểu) của tập tin

Page 14: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemInfo Class

Bảng các thuộc tính chính của FileSystemInfo

Thuộc tính Ý nghĩaThuộc tính Ý nghĩa

LastAccessTime Gán hoặc lấy giá trị về thời gian truy cập cuối cùng của tập tin hay thư mục.

LastWriteTime Gets or sets the time the file or directory was last written to.

Name Trả về tên của tập tin hay thư mục

ấ ẫ ầ

14

FullName Lấy đường dẫn đầy đủ của tập tin hay thư mục

Page 15: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemInfo Class

Bảng các phương thức chính của FileSystemInfo

Phương thức Ý nghĩaPhương thức Ý nghĩa

Delete Xóa tập tin hay thư mục trong hệ thống tập tin.

Refresh Cập nhật lại dữ liệu trong class với thông tin mới nhất từ hệ thống tập tin

15

Page 16: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý hệ thống tập tin và thư mục

• FileSystemInfo• FileInfoFileInfo• DirectoryInfo• DriveInfo• Path• FileSystemWatcher

16

Page 17: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileInfo Class

• FileInfo cung cấp các chức năng cơ bản để truy xuất và thao tác với một tập tin trong hệ thống tập tin.

• Bả á th ộ tí h hí h ủ Fil I f• Bảng các thuộc tính chính của FileInfoThuộc tính Ý nghĩa

T ả ề th hứ tậ ti hiệ hà h đDirectory Trả về thư mục chứa tập tin hiện hành đang truy xuất

DirectoryName Trả về tên của thư mục chứa tập tin đang truy ấDirectoryName xuất

IsReadOnly Lấy và thiết lập thông tin chỉ đọc cho tập tin

17

Length Kích thước của tập tin

Page 18: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileInfo Class• Bả á h thứ hí h ủ Fil I fPhương thức Ý nghĩa

• Bảng các phương thức chính của FileInfo

AppendText Tạo một đối tượng StreamWriter cho phép ghi thêm văn bản vào trong tập tin.

CopyTo Sao chép tập tin đến thư mục khácCopyTo Sao chép tập tin đến thư mục khác

CreateTạo một tập tin mới dựa trên các thông tin của tập tin hiện hànhCreates a file based on the current file informationcurrent file information.

CreateText Tạo một đối tượng StreamWriter cho phép ghi văn bản vào trong tập tin.

18

Page 19: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileInfo Class• Bảng các phương thức chính của FileInfo

Name Description Decrypt Giải mã tập tin đã được mã hóa

• Bảng các phương thức chính của FileInfo

Decrypt Giải mã tập tin đã được mã hóa.

Encrypt Mã hóa nội dung tập tin.

MoveTo Di chuyển tập tin đến thư mục khácMoveTo Di chuyển tập tin đến thư mục khác

Open Mở tập tin để đọc hoặc ghi nội dung

OpenRead Mở tập tin ở chế độ chỉ đọc.

OpenText Mở tập tin và trả về một StreamReader cho phép đọc nội dung bên trong tập tin.

OpenWrite Mở tập tin ở chế độ chỉ ghi

19

OpenWrite Mở tập tin ở chế độ chỉ ghi.

Replace Thay thế nội dung của tập tin bằng thông tin trong FileInfo

Page 20: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Ví dụ• Kiểm tra tập tin có tồn tại hay không:• Kiểm tra tập tin có tồn tại hay không:

• Sao chép tập tinp ập

20

Page 21: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý hệ thống tập tin và thư mục

• FileSystemInfo• FileInfoFileInfo• DirectoryInfo• DriveInfo• Path• FileSystemWatcher

21

Page 22: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DirectoryInfo Class• DirectoryInfo cung cấp các chức năng cơ bản để truy

xuất và thao tác với một thư mục trong hệ thống tập tin.• Bảng các thuộc tính chính của DirectoryInfo• Bảng các thuộc tính chính của DirectoryInfo

Thuộc tính Ý nghĩa

Parent Trả về thư mục chứa (thư mục cha) của thư mục hiện hành đang truy xuất

Root Trả về thư mục gốc trong chuỗi đường dẫn của thư Root ụ g g gmục hiện hành

22

Page 23: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DirectoryInfo Class• Bả á h thứ hí h ủ Di t I f

Phương thức Ý nghĩa• Bảng các phương thức chính của DirectoryInfo

Create Tạo thư mục theo thông tin được mô tả trong DirectoryInfo.

CreateSubdirectory Tạo thư mục con của thư mục hiện hànhCreateSubdirectory Tạo thư mục con của thư mục hiện hành

GetDirectoriesTrả về một mảng đối tượng kiểu DirectoryInfo gồm các thư mục con trong thư mục hiện hà hhành

GetFiles Trả về một mảng đối tượng kiểu FileInfo gồm các tập tin trong thư mục hiện hành

23

ập g ụ ệ

Page 24: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DirectoryInfo Class• Bả á h thứ hí h ủ Di t I f

Phương thức Ý nghĩaả ề ộ ả ố ể

• Bảng các phương thức chính của DirectoryInfo

GetFileSystemInfosTrả về một mảng đối tượng kiểu FileSystemInfo gồm các tập tin và thư mục trong thư mục hiện hành

MoveTo Di chuyển thư mục hiện hành sang vị trí khác

24

Page 25: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DirectoryInfo Class• Ví dụ: Duyệt qua các tập tin có trong thư mục

Windows:

25

Page 26: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý hệ thống tập tin và thư mục

• FileSystemInfo• FileInfoFileInfo• DirectoryInfo• DriveInfo• Path• FileSystemWatcher

26

Page 27: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DriveInfo Class• DirectoryInfo cung cấp các chức năng cơ bản để truy

xuất và thao tác với một ổ đĩa trong hệ thống tập tin.• Bảng các thuộc tính chính của DriveInfo• Bảng các thuộc tính chính của DriveInfo

Tên thuộc tính Ý nghĩa

AvailableFreeSpace Trả về kích thước còn trống cho phép lưu trữ trên ổ đĩa

DriveFormat Trả về thông tin định dạng của ổ đĩa (NTFS, DriveFormat g ị ạ g ( ,FAT32…)

DriveType Trả về kiểu của ổ đĩa (ổ đĩa cứng, CDRom…)

27

Page 28: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DriveInfo Class• Bảng các thuộc tính chính của DriveInfo

Thuộc tính Ý nghĩaTrả về trạng thái của ổ đĩa (có sẵn sàng cho phép

• Bảng các thuộc tính chính của DriveInfo

IsReady Trả về trạng thái của ổ đĩa (có sẵn sàng cho phép truy xuất hay không).

Name Tên của ổ đĩa.

TotalFreeSpace Trả về tổng kích thước còn trống của ổ đĩa.

T t lSi T ả ề tổ kí h th ớ ủ ổ đĩTotalSize Trả về tổng kích thước của ổ đĩa.

VolumeLabel Trả về nhãn của ổ đĩa.

28

Page 29: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DriveInfo Class• Bả h thứ hí h ủ D i I f

Phương thức Ý nghĩa • Bảng phương thức chính của DriveInfo

GetDrives Trả về tất cả các ổ đĩa hiện có trên hệ thống (phương thức tĩnh – static)

29

Page 30: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DriveInfo Class• Bả á thà h hầ ủ kiể liệt kê D i T

Thành phần Ý nghĩa ổ

• Bảng các thành phần của kiểu liệt kê DriveType

CDRom ổ đĩa quang (CD-ROM, DVD…).

Fixed ổ đĩa cố định (ổ đĩa cứng)

Network ổ đĩa mạng

NoRootDirectory ổ đĩa không có thư mục gốc

Ram ổ đĩa RAM (được tạo từ RAM)

Removable ổ đĩa di động (USB)

30

Unknown ổ đĩa không xác định.

Page 31: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

DriveInfo Class• Ví d d ệt á ổ đĩ ó t hệ thố• Ví dụ: duyệt qua các ổ đĩa có trong hệ thống

31

Page 32: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý hệ thống tập tin và thư mục

• FileSystemInfo• FileInfoFileInfo• DirectoryInfo• DriveInfo• Path• FileSystemWatcher

32

Page 33: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Path Class• Path cung cấp các chức năng cơ bản để truy xuất và thao

tác với đường dẫn hệ thống tập tin.• Bảng các phương thức chính của Path• Bảng các phương thức chính của Path

Phương thức Ý nghĩa

ChangeExtension Trả về chuỗi đường dẫn đống thời đổi phần mở rộng của tập tin trong chuỗi đường dẫn

C bi Trả về 1 chuỗi đường dẫn bằng cách kết hợp 2 Combine g g ợpchuỗi đường dẫn.

GetDirectoryName Trả về tên của thư mục hiện hành

33

Page 34: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Path Class• Bả á h thứ hí h ủ P th

Phương thức Ý nghĩa ề ể

• Bảng các phương thức chính của Path

GetExtension Trả về kiểu của tập tin hiện hành

GetFileName Trả về tên của tập tin hiện hành

GetFileNameWithoutExtension

Trả về kiểu của tập tin hiện hành không có phần kiểu

GetFullPath Trả về đường dẫn đầy đủ dựa vào đường dẫn GetFullPath g y ự gtương đối được cung cấp

GetPathRoot Trả về thư mục gốc dựa vào đường dẫn được cung cấp

34

g p

Page 35: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Path Class• Bả á h thứ hí h ủ P th

Phương thức Ý nghĩaT ả ề tê tậ ti đ lấ ột á h ẫ

• Bảng các phương thức chính của Path

GetRandomFileName Trả về tên tập tin được lấy một cách ngẫu nhiên

GetTempFileName Trả về tên của thư mục tạm (thư mục temp) ứ ới ời dù hiệ hà hGetTempFileName ứng với người dùng hiện hành

GetTempPath Trả về đường dẫn đến thư mục tạm (thư mục temp)

HasExtension Kiểm tra trong đường dẫn có phần mở rộng của tập tin hay không

I P thR t d Kiểm tra đường dẫn có bắt đầu từ thư mục

35

IsPathRooted Kiểm tra đường dẫn có bắt đầu từ thư mục gốc (tên ổ đĩa) hay không

Page 36: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Path Class• Ví d th đổi hầ ở ộ ủ tậ ti• Ví dụ: thay đổi phần mở rộng của tập tin

36

Page 37: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý hệ thống tập tin và thư mục

• FileSystemInfo• FileInfoFileInfo• DirectoryInfo• DriveInfo• Path• FileSystemWatcher

37

Page 38: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemWatcher Class• FileSystemWatcher cung cấp các chức năng cơ bản để

giám sát các thay đổi trong hệ thống tập tin và thư mục.• Bảng các thuộc tính chính của FileSystemWatcher• Bảng các thuộc tính chính của FileSystemWatcher

Thuộc tính Ý nghĩa

EnableRaisingEvents Lấy và thiết lập thông tin cho phép phát sinh sự kiện. Lấy và thiết lập danh sách tập tin sẽ được lọc khi

Filter y ập ập ợ ọ

giám sát. Nếu không thiết lập thì sẽ giám sát tất cả các tập tin.

I l d S bdi t i Ch hé iá át á th h khô

38

IncludeSubdirectories Cho phép giám sát các thư mục con hay không.

Page 39: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemWatcher Class• Bảng các thuộc tính chính của FileSystemWatcher

Thuộc tính Ý nghĩaChế độ iá át Mặ đị h ẽ iá át tất ả

NotifyFilter Chế độ giám sát. Mặc định sẽ giám sát tất cả các thay đổi (tạo, xóa, đổi tên và hiệu chỉnh nội dung trong tập tin).

• Phương thức chính của FileSystemWatcher

Path Đường dẫn đến thư mục cần giám sát.

g y

Phương thức Ý nghĩaWaitForChanged Phương thức đồng bộ trong việc giám sát một

ề ấ ồ ấ

39

g g g g gthư mục và trả về cấu trúc bao gồm tất cả các thay đổi trên thư mục đó

Page 40: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemWatcher Class• Bảng các sự kiện chính của FileSystemWatcher

Sự kiện Ý nghĩa

Changed Xảy ra khi một tập tin hay một thư mục bị thay đổi trong thư mục được giám sát

Xảy ra khi một tập tin hay một thư mục vừa mớiCreated Xảy ra khi một tập tin hay một thư mục vừa mới được tạo trong thư mục được giám sát

Deleted Xảy ra khi một tập tin hay một thư mục bị xóa trong thư mục được giám sátthư mục được giám sát

Renamed Xảy ra khi một tập tin hay một thư mục bị đổi tên trong thư mục được giám sát

40

Page 41: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemWatcher Class• Ví dụ 1: giám sát việc tạo và xóa tập tin, thư mục trên

thư mục gốc đĩa C:\

41

Page 42: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileSystemWatcher Classổ• Ví dụ 2: giám sát việc sửa đổi tên tập tin và thư mục trên

thư mục gốc đĩa C:\

42

Page 43: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Bài 7: Xử lý nhập/xuất dữ liệu

• Khái niệm về các loại tập tin• Xử lý hệ thống tập tin và thư mục qua các lớp• Xử lý đọc ghi tập tinXử lý đọc ghi tập tin

43

- 8 tiết -

Page 44: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

44

• MemoryStream, BufferedStream

Page 45: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Streamổ ế ấ ể ấ• Sử dụng Stream là cách phổ biến nhất để truy xuất dữ

liệu dạng tuần tự hay ngẫu nhiên trong .NET Framework• Bảng các thuộc tính của Stream:• Bảng các thuộc tính của Stream:

Thuộc tính Ý nghĩa

CanRead Kiểm tra có hổ đọc dữ liệu theo luồng (stream) hay không

CanSeek Kiểm tra có hỗ trợ định vị theo luồng (stream) hay CanSeek ợ ị ị g ( ) ykhông

CanWrite Kiểm tra có hổ trợ ghi dữ liệu theo luồng (stream) hay không

45

y g

CanTimeout Kiểm tra có hỗ trợ thời gian tạm ngưng hay không

Page 46: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Stream• Bảng các thuộc tính của Stream:

Thuộc tính Ý nghĩa

Length Trả về kích thước (bytes) của luồng dữ liệu (stream)

Position Lấy và thiết lập vị trí con trỏ hiện hành trong Position y ập ị ệ gluồng dữ liệu để xác định vị trí bắt đầu đọc/ghi

CanWrite Kiểm tra có hổ ghi dữ liệu theo luồng (stream) hay khôngy g

ReadTimeout Lấy và thiết lập thời gian tạm ngưng cho việc đọc dữ liệuLấ à thiết lậ thời i t h iệ

46

WriteTimeout Lấy và thiết lập thời gian tạm ngưng cho việc ghi dữ liệu

Page 47: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Stream• Bảng các phương thức của Stream:

Thuộc tính Ý nghĩa

Close Đóng stream và giải phóng tài nguyên liên quan đến stream

Flush Xóa các buffer đã cấp cho streamFlush Xóa các buffer đã cấp cho stream

ReadThực hiện đọc dữ liệu tuần tự với số bytes được chỉ định tại vị trí của con trỏ và cập nhật lại vị trí mới của con trỏlại vị trí mới của con trỏ

ReadByte Đọc dữ liệu theo từng byte

47

Seek Thiết lập vị trí con trỏ trong stream

Page 48: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Stream• Bảng các phương thức của Stream:

Thuộc tính Ý nghĩa

SetLength Xác định lại kích thước của stream

Write Ghi thông tin xuống stream và cập nhật lại vị trí của con trỏ trong streamcủa con trỏ trong stream

WriteByte Ghi thông tin xuống stream theo từng byte và cập nhật lại vị trí của con trỏ trong stream

48

Page 49: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

49

• MemoryStream, BufferedStream

Page 50: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

File class

• File cung cấp các chức năng cơ bản trong việc đọc và ghi nội dung vào tập tin.

• Bảng các thuộc tính của File:

Thuộc tính Ý nghĩa

AppendAllText Thêm một chuỗi văn bản vào tập tin, nếu tập tin không tồn tại sẽ tạo tập tin mớiMở tập tin (hoặc tạo mới nếu tập tin không

AppendText Mở tập tin (hoặc tạo mới nếu tập tin không tồn tại) và trả về một đối tượng StreamWriter được dùng để ghi thêm nội dung văn bản vào tập tin

50

Copy Sao chép tập tin thành một tập tin mới. Tập tin mới phải chưa tồn tại trên đĩa

Page 51: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

File class

• Bảng các thuộc tính của File:

Thuộc tính Ý nghĩaộ gCreate Tạo mới tập tin và trả về đối tượng FileStream

Tạo mới hoặc mở tập tin đã có và trả về một đối S W i dù để hi ội d ăCreateText tượng StreamWriter dùng để ghi nội dung văn

bản vào tập tin.

Move Di chuyển tập tin đến một vị trí khácy ập ộ ị

Open Mở một tập tin đã tồn tại và trả về một đối tượng FileStream

O R d Mở ột tậ ti đã tồ t i à t ả ề ột đối t

51

OpenRead Mở một tập tin đã tồn tại và trả về một đối tượng FileStream ở chế độ chỉ cho phép đọc

Page 52: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

File class

• Bảng các thuộc tính của File:

Thuộc tính Ý nghĩaộ g

OpenText Mở một tập tin đã tồn tại và trả về một đối tượng StreamReader.Mở một tập tin đã tồn tại và trả về một đối tượngOpenWrite Mở một tập tin đã tồn tại và trả về một đối tượng StreamWriter.

ReadAllBytes Mở tập tin và đọc nội dung vào trong một mảng kiểu bytekiểu byte.

ReadAllLines Mở tập tin và đọc nội dung vào trong một mảng kiểu chuỗi (mỗi phần tử là một dòng).

52

ReadAllText Mở tập tin và đọc toàn bộ nội dung vào trong một biến kiểu chuỗi.

Page 53: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

File class

• Bảng các thuộc tính của File:

Thuộc tính Ý nghĩaộ g

WriteAllBytes Mở tập tin và ghi nội dung của một mảng kiểu byte vào tập tin (ghi đè lên nội dung đã có của tập tin).ập )

WriteAllLines Mở tập tin và ghi nội dung của một mảng kiểu chuỗi vào tập tin (ghi đè lên nội dung đã có của tập tin).ập )

WriteAllText Mở tập tin và ghi nội dung của một chuỗi văn bản vào tập tin (ghi đè lên nội dung đã có của tập tin).

53

Page 54: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

File class

• Bảng các giá trị của kiểu liệt kê FileAccess:Thuộc tính Ý nghĩa

Read Mở tập tin ở chế độ chỉ cho phép đọc.

ếWrite Mở tập tin ở chế độ chỉ cho phép ghi

ReadWrite Mở tập tin ở chế độ cho phép đọc và ghi.ập ộ p p ọ g

54

Page 55: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

File class

• Bảng các giá trị của kiểu liệt kê FileMode:Thuộc tính Ý nghĩa

Append Mở tập tin và di chuyển con trỏ đến cuối tập tin. Chỉ sử dụng khi chọn chế độ mở tập tin là FileAccess.Write.

Create Tạo mới tập tin, nếu tập tin đã tồn tại sẽ ghi đè lên nội Create ạ ập , ập ạ g ộdung đã có.

CreateNew Tạo mới tập tin, nếu tập tin đã tồn tại sẽ phát sinh lỗi.

Mở tậ ti đã ó ế tậ ti khô tồ t i ẽ hát i h lỗiOpen Mở tập tin đã có, nếu tập tin không tồn tại sẽ phát sinh lỗi.

OpenOrCreate Mở tập tin đã có, nếu tập tin không tồn tại sẽ tạo mới tập tin.

55

Truncate Mở tập tin đã có và xóa toàn bộ nội dung đang có.

Page 56: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Directory class

• Directory cung cấp các chức năng cơ bản trong việc xử lý các thư mục.

• Bảng các thuộc tính của Directory:

Thuộc tính Ý nghĩa

CreateDirectory Tạo thư mục theo đường dẫn được cung cấp

Delete Xóa thư mụcDelete Xóa thư mục

Exists Kiểm tra thư mục có tồn tại hay không

GetCreationTime Trả về ngày giờ tạo thư mục

56

GetCreationTime Trả về ngày giờ tạo thư mục

Page 57: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Directory class

• Bảng các thuộc tính của Directory:Thuộc tính Ý nghĩa

GetCurrentDirectory Trả về đối tượng DirectoryInfo là thư mục hiện hành đang làm việc

G tDi t i Trả về danh sách tên các thư mục con GetDirectories ụcủa thư mục hiện hành.

GetDirectoryRoot Trả về thông tin thư mục gốc của thư mục hiện hành.ụ ệ

GetFiles Trả về tên của các tập tin trong thư mục hiện hànhTrả về danh sách các tập tin và thư mục

57

GetFileSystemEntries Trả về danh sách các tập tin và thư mục con trong thư mục hiện hành

Page 58: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Directory class

• Bảng các thuộc tính của Directory:Thuộc tính Ý nghĩa

GetLastAccessTime Trả về thời gian truy xuất cuối cùng của thư mục.

G tL tW it Ti Trả về thời gian cập nhật cuối cùng của GetLastWriteTime g ập ậ gthư mục.

GetLogicalDrives Trả về danh sách các ổ đĩa hiện có của hệ thống.g

GetParent Trả về thư mục cha của thư mục hiện hành.Di chuyển thư mục (kể cả nội dung bên

58

Move Di chuyển thư mục (kể cả nội dung bên trong thư mục) đến một vị trí khác

Page 59: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Directory class

• Bảng các thuộc tính của Directory:Thuộc tính Ý nghĩa

SetCreationTime Thiết lập thời gian tạo thư mục

S tC tDi t Thiết lập th m c hiện hànhSetCurrentDirectory Thiết lập thư mục hiện hành.

SetLastAccessTime Thiết lập thời gian truy xuất cuối cùng đến thư mụcụ

SetLastWriteTime Thiết lập thời gian cập nhật cuối cùng trên thư mục

59

Page 60: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

60

• MemoryStream, BufferedStream

Page 61: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

FileStream class

• FileStream cung cấp các chức năng cơ bản trong việc đọc và ghi nội dung vào tập tin.

ế• FileStream kế thừa từ lớp Stream nên FileStream có các thuộc tính và phương thức tương tự như Stream.

61

Page 62: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

62

• MemoryStream, BufferedStream

Page 63: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamReader class

• StreamReader cung cấp các chức năng cơ bản để đọc dữ liệu nhận được từ lớp Stream.

• Bảng các thuộc tính của StreamReader:

Thuộc tính Ý nghĩa

BaseStream Trả về đối tượng Stream đang đọc dữ liệu

CurrentEncoding Trả về mã hóa hiện tại đang sử dụng trong CurrentEncoding Stream

EndOfStream Kiểm tra đã đọc đến cuối Stream hay chưa

63

Page 64: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamReader class

• Bảng các phương thức của StreamReader:Thuộc tính Ý nghĩa

Close Đóng stream đang đọc dữ liệu

Peek Trả về ký tự kế tiếp trong stream mà không di h ể h t ỏ dữ liệPeek chuyển cho trỏ dữ liệu

Read Đọc một nhóm ký tự kế tiếp trong Stream

R dBl k Đ ột khối ký t kế tiế t StReadBlock Đọc một khối ký tự kế tiếp trong Stream

ReadLine Đọc một dòng kế tiếp trong Stream

64

ReadToEnd Đọc tất cả các ký tự trong Stream

Page 65: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamReader class

• Ví dụ 1: đọc nội dung tập tin C:\boot.ini− Bước 1: mở tập tin để đọc

FileStream theFile = File.Open(@"C:\boot.ini", FileMode.Open, FileAccess.Read);

− Bước 2: đọc dữ liệu từ StreamStreamReader rdr = new StreamReader(theFile); Console.Write(rdr.ReadToEnd()); rdr Close()rdr.Close(); theFile.Close();

65

Page 66: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamReader class

• Ví dụ 2: đọc nội dung tập tin C:\boot.ini sử dụng phương thức ReadToEnd:

StreamReader rdr = File.OpenText(@"C:\boot.ini"); Console.Write(rdr.ReadToEnd()); rdr Close();rdr.Close();

• Ví dụ 3: đọc nội dung tập tin C:\boot.ini sử dụng phương thức ReadAllText:

Console.WriteLine(File.ReadAllText(@"C:\boot.ini"));

66

Page 67: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamReader class

• Ví dụ 4: đọc nội dung tập tin C:\boot.ini sử dụng phương thức ReadLine:

StreamReader rdr = File.OpenText(@"C:\boot.ini");

// duyệt qua từng dòng dữ liệu

hil (! d E dOfSt )while (!rdr.EndOfStream)

{

string line = rdr ReadLine();string line = rdr.ReadLine();

Console.WriteLine(line);

}

67

}

rdr.Close();

Page 68: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamWriter class

• StreamWriter cung cấp các chức năng cơ bản để ghi dữ liệu vào Stream.

• Bảng các thuộc tính của StreamWriter:

Thuộc tính Ý nghĩa

BaseStream Trả về đối tượng Stream đang đọc dữ liệu

Encoding Trả về mã hóa hiện tại đang sử dụng trong StEncoding Stream

NewLine Lấy và thiết lập chuỗi ký tự ngắt dòng

68

Page 69: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamWriter class

• Bảng các phương thức của StreamWriter:Thuộc tính Ý nghĩa

Close Đóng stream đang ghi dữ liệu

Write Ghi dữ liệu và stream

WriteLine Ghi dữ liệu và stream và ngắt xuống dòng mới

69

Page 70: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamWriter class

• Ví dụ 1: ghi nội dung xuống tập tin C:\test.txt− Bước 1: mở tập tin để ghi

FileStream theFile = File.Create(@"c:\test.txt");

− Bước 2: ghi dữ liệu vào StreamStreamWriter writer = new StreamWriter(theFile);StreamWriter writer = new StreamWriter(theFile); writer.WriteLine("Hello"); writer.Close(); theFile.Close();

70

Page 71: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamWriter class

• Ví dụ 2: ghi nội dung xuống tập tin C:\test.txt sử dụng phương thức CreateText của lớp File:

StreamWriter writer = File.CreateText(@"c:\somefile.txt"); writer.WriteLine("Hello"); writer Close();writer.Close();

• Ví dụ 3: ghi nội dung xuống tập tin C:\test.txt sử dụng phương thức WriteAllText của lớp File:

File.WriteAllText(@"c:\somefile.txt", "Hello");

71

Page 72: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StreamWriter class

• Các cách mở tập tin để ghi dữ liệu:− Sử phương thức Open của lớp File

FileStream theFile = null; theFile = File.Open(@"c:\somefile.txt", FileMode.Open,

FileAccess.Write);

− Sử dụng phương thức OpenWrite của lớp FileFileStream theFile = null;

theFile = File.OpenWrite(@"c:\somefile.txt");

− Sử dụng phương thức Open của lớp File với cơ chế OpenOrWriteFileStream theFile = null;

72

FileStream theFile null;

theFile = File.Open(@"c:\somefile.txt", FileMode.OpenOrCreate, FileAccess.Write);

Page 73: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

73

• MemoryStream, BufferedStream

Page 74: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StringReader class

• Sử dụng StringReader để đọc dữ liệu theo từng dòngstring s = @"Hello all //dòng thứ 1

This is a multi-line //dòng thứ 2

text string"; //dòng thứ 3

St i R d d St i R d ( )StringReader rdr = new StringReader(s); // kiểm tra nếu còn ký tự kế tiếp để đọc while (rdr Peek() != -1)while (rdr.Peek() ! 1) {

string line = rdr.ReadLine();

74

Console.WriteLine(line);

}

Page 75: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

StringWriter class

• Sử dụng StringWriter để ghi dữ liệu theo từng dòngstring s = “”; StringWriter writer = new StringWriter(); writer.WriteLine("Hello all");

it W it Li ("Thi i lti li ")writer.WriteLine("This is a multi-line"); writer.WriteLine("text string"); s = writer ToString();s writer.ToString();Console.WriteLine(s);

75

Page 76: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

76

• MemoryStream, BufferedStream

Page 77: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

BinaryWriter class

• Sử dụng BinaryWriter để ghi dữ liệu dạng nhị phânFileStream newFile = File.Create(@"c:\somefile.bin"); BinaryWriter writer = new BinaryWriter(newFile); long number = 100; b t [] b t b t [] { 10 20 50 100 }byte[] bytes = new byte[] { 10, 20, 50, 100 }; string s = “Trung tâm tin học"; writer Write(number);writer.Write(number); writer.Write(bytes); writer.Write(s);

77

writer.Close();

Page 78: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

BinaryReader class• Sử d Bi R d để đ dữ liệ d hị hâ• Sử dụng BinaryReader để đọc dữ liệu dạng nhị phân

FileStream newFile = File.Open(@"c:\somefile.bin", FileMode.Open); BinaryReader reader = new BinaryReader(newFile); long number = reader.ReadInt64(); byte[] bytes = reader.ReadBytes(4); string s = reader ReadString();string s = reader.ReadString(); reader.Close(); Console.WriteLine(number); f h (b b i b )foreach (byte b in bytes) {

Console.Write("[{0}]", b);

78

} Console.WriteLine(s);

Page 79: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

Xử lý đọc ghi tập tin

• Stream• Directory FileDirectory, File• FileStream• StreamReader, StreamWriter• StringReader, StringWriterg g• BinaryReader, BinaryWriter• MemoryStream BufferedStream

79

• MemoryStream, BufferedStream

Page 80: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

MemoryStream class

• MemoryStream cung cấp các chức năng cơ bản trong việc tạo các stream trên bộ nhớ chính .

ế• MemoryStream kế thừa từ lớp Stream nên MemoryStream có các thuộc tính và phương thức tương tự như Stream. Ngoài ra còn có các thuộc tính và g ự g ộphương thức sau:− Capacity: lấy hoặc thiết lập kích thước (bytes) được phân bổ cho

stream.stream.

− GetBuffer: lấy về một mảng số nguyên byte không dấu dùng để tạo stream.

T A hi t à bộ t à ả b t

80

− ToArray: ghi toàn bộ stream vào mảng bytes

− WriteTo: ghi nội dung của MemoryStream vào một Stream khác

Page 81: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

MemoryStream class

• Ví dụ:− Khai báo và khởi tạo MemoryStream:

MemoryStream memStrm = new MemoryStream();

− Ghi dữ liệu vào MemoryStream:Ghi dữ liệu vào MemoryStream:StreamWriter writer = new StreamWriter(memStrm); writer.WriteLine("Hello"); writer.WriteLine("Goodbye");

81

Page 82: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

MemoryStream class

• Ví dụ:− Ghi dữ liệu từ MemoryStream xuống tập tin:

writer.Flush(); FileStream theFile = File.Create(@"c:\inmemory.txt"); memStrm WriteTo(theFile);memStrm.WriteTo(theFile); writer.Close(); theFile.Close(); memStrm.Close();

82

Page 83: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

BufferedStream class

• BufferedStream cung cấp các chức năng cơ bản trong việc tạo các stream trên bộ nhớ đệm.

ế• BufferedStream kế thừa từ lớp Stream nên BufferedStream có các thuộc tính và phương thức tương tự như Stream. g ự

83

Page 84: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

BufferedStream class

• Ví dụ: sử dụng BufferedStream để ghi dữ liệuFileStream newFile = File.Create(@"c:\test.txt"); BufferedStream buffered = new BufferedStream(newFile); StreamWriter writer = new StreamWriter(buffered);

it W it Li ("S d t ")writer.WriteLine("Some data"); writer.Close();

84

Page 85: Bài 7 - Xử lý nhập xuất - Nền tảng lập trình ứng dụng với C#

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM

TRUNG TÂM TIN HỌC

85