Friday, October 20, 2017

Truy xuất các thông tin về file hay thư mục trong C#

Các lớp I/O của Microsoft .NET gồm hai loại chính. Loại thứ nhất truy xuất thông tin từ hệ thống file và cho phép thực hiện các thao tác trên hệ thống file (như chép file, chuyển thư mục). Hai lớp tiêu biểu là FileInfo và DirectoryInfo. Loại thứ hai quan trọng hơn, gồm rất nhiều lớp cho phép đọc và ghi dữ liệu từ mọi kiểu stream. Stream có thể tương ứng với một file nhị phân hay văn bản, một file trong không gian lưu trữ riêng, một kết nối mạng, hoặc một vùng đệm bộ nhớ. Trong mọi trường hợp, cách thức tương tác với stream đều như nhau. Trong chương này, chúng ta sẽ xem xét các lớp hệ thống file và các lớp dựa trên stream.

Như tiêu đề, bạn cần truy xuất các thông tin về một file hay một thư mục, chẳng hạn ngày tạo hay các thuộc tính của chúng.

Giải pháp của chúng ta: Tạo đối tượng System.IO.FileInfo cho file hay đối tượng System.IO.DirectoryInfo cho thư mục. Sau đó, truyền đường dẫn tới file hay thư mục đó trong phương thức khởi dựng. Các thông tin cần thiết sẽ được truy xuất thông qua các thuộc tính của đối tượng.

Để tạo một đối tượng FileInfo hay DirectoryInfo, bạn cần truyền đường dẫn tương đối hay đầy đủ trong phương thức khởi dựng của nó. Bạn có thể lấy các thông tin về file hay thư mục thông qua các thuộc tính của đối tượng tương ứng. Bảng dưới liệt kê các thành viên của lớp FileInfo và DirectoryInfo:

Các thành viên của FileInfo và DirectoryInfo
Thành viênThuộc lớpMô tả
ExistsFileInfo và DirectoryInfoTrả về true hay false, tùy thuộc vào file hay thư mục có tồn tại ở đường dẫn được chỉ định hay không.
AttributesFileInfo và DirectoryInfoTrả về một hoặc nhiều giá trị thuộc kiểu liệt kê System.IO.FileAttributes, cho biết các thuộc tính của file hay thư mục.
CreationTime, LastAccessTime, và LastWriteTimeFileInfo và DirectoryInfoTrả về các thể hiện System.DateTime cho biết khi nào một file hay thư mục được tạo ra, truy xuất lần cuối, và cập nhật lần cuối.
FullName, Name, và ExtensionFileInfo và DirectoryInfoTrả về một chuỗi chứa tên đầy đủ, tên thư mục hay tên file (cùng phần mở rộng), và phần mở rộng.
LengthFileInfoTrả về kích thước file (tính theo byte).
DirectoryName và DirectoryFileInfoDirectoryName trả về chuỗi chứa tên của thư mục cha; Directory trả về đối tượng DirectoryInfo mô tả thư mục cha, cho phép bạn truy xuất thêm thông tin về nó.
Parent và RootDirectoryInfoTạo một thư mục bên trong thư mục được mô tả bởi đối tượng DirectoryInfo, tên thư mục cần tạo được truyền cho phương thức. Trả về đối tượng DirectoryInfo mô tả thư mục con vừa tạo.
GetDirectoriesDirectoryInfoTrả về mảng các đối tượng DirectoryInfo, mỗi đối tượng mô tả một thư mục con trong thư mục này.
GetFilesDirectoryInfoTrả về mảng các đối tượng FileInfo, mỗi đối tượng mô tả một file trong thư mục này.

Chú ý hai điểm quan trọng khi sử dụng các đối tượng FileInfo và DirectoryInfo:
· Tất cả các thuộc tính của đối tượng FileInfo và DirectoryInfo được đọc ngay lần đầu tiên bạn truy xuất một thuộc tính nào đó. Nếu file hay thư mục thay đổi sau thời điểm này, bạn phải gọi phương thức Refresh để cập nhật các thuộc tính.
· Sẽ không có lỗi nếu bạn chỉ định một đường dẫn không tương ứng với một file hay thư mục đang tồn tại khi tạo một đối tượng FileInfo hay DirectoryInfo. Thay vào đó, bạn sẽ nhận được một đối tượng mô tả file hay thư mục không tồn tại—thuộc tính Exists của nó có giá trị false. Bạn có thể sử dụng đối tượng này để tạo file hay thư mục bằng cách gọi phương thức Create của nó. Nếu bạn truy xuất thuộc tính khác, ngoại lệ FileNotFoundException hay DirectoryNotFoundException sẽ bị ném.

Ứng dụng Console dưới đây nhận một đường dẫn file từ dòng lệnh, và rồi hiển thị thông tin về file và thư mục chứa file.




Nếu bạn thực thi lệnh FileInformation c:\windows\win.ini, kết xuất có thể như sau:
Checking file: win.ini
File exists: True
File created: 2001-08-23 8:00:00 AM
File last updated: 2003-03-22 9:55:16 AM
File last accessed: 2003-05-26 2:21:53 PM
File size (bytes): 2128
File attribute list: Archive
Checking directory: windows
In directory: c:\
Directory exists: True
Directory created: 2000-01-01 8:03:33 AM
Directory last updated: 2003-05-26 2:25:25 PM
Directory last accessed: 2003-05-26 2:25:25 PM
Directory attribute list: Directory
Directory contains: 147 files

Hy vọng bài viết sẽ giúp các bạn hiểu rõ hơn về cách làm việc với file hay thư mục trong C#
Để hiểu rõ hơn, các bạn có thể vào đọc ebook ở địa chỉ sau:
http://www.hoang.name.vn/2015/12/giao-trinh-cshap-7-bo-ebook-cshap-tieng-viet.html

No comments:

Post a Comment