Khi muốn đọc hay ghi dữ liệu vào/ra tập tin hay muốn truyền dữ liệu từ máy này sang máy khác, ta phải tổ chức dữ liệu theo cấu trúc tuần tự các byte hay các gói tin …. Điều này dễ liên tưởng dữ liệu như là các luồng dữ liệu chảy từ từ nguồn đến
đích.
Thư viện .NET Framework cung cấp các lớp Stream (Stream và các lớp thừa kế
từ nó) để chương trình có thể sử dụng trong các thao tác nhập xuất dữ liệu như
doc/ghi tập tin, truyền dữ liệu qua mạng …
21.1 Tập tin và thư mục
Các lớp đề cập trong chương này thuộc về vùng tên System.IO. Các lớp này bao gồm lớp File mô phỏng cho một tập tin trên đĩa, và lớp Directory mô phỏng cho một thư mục trên đĩa.
21.1.1 Làm việc với thư mục
Lớp Directory có nhiều phương thức dành cho việc tạo, di chuyển, duyệt thư
mục. Các phương thức trong lớp Directoryđều là phương thức tĩnh;vì vậy không cần phải tạo một thể hiện lớp Directory mà có thể truy xuất trực tiếp từ tên lớp. Lớp DirectoryInfo là lớp tương tự như lớp Directory. Nó cung các tất cả các phương thức mà lớp Directory có đồng thời bổ sung nhiều phương thức hữu ích hơn cho việc duyệt cấu trúc cây thư mục. Lớp DirectoryInfo thừa kế từ lớp
FileSystemInfo, và vì vậy cũng thừa kế lớp MarshalByRefObj. Lớp
DirectoryInfo không có phương thức tĩnh, vì vậy cần tạo một thể hiện lớp trước khi sử dụng các phương thức.
Có một khác biệt quan trong giữa Directory và DirectoryInfo là các phương thức của lớp Directory sẽ được kiểm tra về bảo mật mỗi khi được gọi trong khi
đối tượng DirectoryInfo chỉ kiểm tra một lần vào lúc khởi tạo, các phương thức vì vậy sẽ thực hiện nhanh hơn.
Dưới đây là bảng liệt kê các phương thức quan trọng của hai lớp
Bảng 21-1 Các phương thức lớp Directory
Phưong thức Giải thích
CreateDirectory() Tạo tất cả các thư mục và thư mục con trong đường dẫn tham số. Delete() Xoá thư mục và các nội dung của nó.
Luồng dữ liệu. Gvhd: Nguyễn Tấn Trần Minh Khang
Exists( ) Trả về kết quả kiểu logic, đúng nếu đường dẫn đến thư mục tồn tại (có nghĩa là thư mục tồn tại).
GetCreationTime( )
SetCreationTime( ) Lấy/thiết đặt ngày giờ tạo thư mục GetCurrentDirectory( )
SetCurrentDirectory( ) Lấy/thiết đặt thư mục hiện hành
GetDirectories( ) Lấy về một mảng các thư mục con một thư mục GetDirectoryRoot( ) Trả về thư mục gốc của đường dẫn
GetFiles( ) Trả về mảng chuỗi tên các tập tin chứa trong một thư mục GetLastAccessTime( )
SetLastAccessTime( ) Lầy/thiết đặt ngày giờ lần truy cập cuối cùng đến thư mục GetLastWriteTime( )
SetLastWriteTime( ) Lầy/thiết đặt ngày giờ lần chỉnh sửa cuối cùng lên thư mục GetLogicalDrives( ) Trả về tên của tất cả các ổđĩa logic theo định dạng <ổ_đĩa>:\ GetParent() Trả về thư mục cha của một đường dẫn.
Move() Di chuyển thư mục (cả nội dung) đến một vị trí khác.
Bảng 21-2 Các phương thức/property lớp DirectoryInfo
Phưong thức/property Ý nghĩa
Attributes Thừa kế từ FileSystemInfo, lấy/thiết đặt thuộc tính của tập tin hiện hành. CreationTime Thừa kế từ FileSystemInfo, lấy/thiết đặt thời gian tạo tập tin
Exists Trả vềđúng nếu thư mục tồn tại
Extension Thừa kế từ FileSystemInfo, phần mở rộng tập tin
FullName Thừa kế từ FileSystemInfo, đường dẫn đầy đủ của tập tin hay thư mục LastAccessTime Thừa kế từ FileSystemInfo, ngày giờ truy cập cuối cùng
LastWriteTime Thừa kế từ FileSystemInfo, ngày giờ chỉnh sửa cuối cùng
Name Tên thư mục
Parent Lấy thư mục cha
Root Lấy thư mục gốc của đường dẫn. Create( ) Tạo một thư mục
CreateSubdirectory() Tạo một hoặc nhiều thư mục con Delete( ) Xóa một thư mục và nội dung của nó
GetDirectories( ) Trả về danh sách các thư mục con của thư hiện hiện có GetFiles( ) Lấy danh mục các tập tin của thư mục
GetFileSystemInfos() Nhận về mảng các đối tượng FileSystemInfo