Trong bài viết này, chúng ta sẽ cùng tìm hiểu về các class File và Directory trong C#.
#1/3. Sơ đồ quan hệ thừa kế giữa các class:
#2/3. 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à method static. Vì vậy không cần tạo đối tượng mà chúng ta có thể gọi trực tiếp bằng tên class Directory.
– Lớp DirectoryInfo cũng cung cấp những phương thức mà lớp Directory có, đồng thời bổ sung thêm 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 không có phương thức static, vì vậy muốn sử dụng các method cần tạo object với tham số cần truyền vào cho DirectoryInfo là path của folder.
Có một khác biệt quan trọng giữa Directory và DirectoryInfo là các method của class 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, vì vậy các method sẽ thực hiện nhanh hơn.
Một số phương thức quan trọng của class Directory
Tên phương thức | Mô tả |
CreateDirectory() | Tạo tất cả các thư mục và thư mục con trong đường dẫn tham số. |
Delete() | Xóa thư mục và các nội dung của nó. |
Exists() | Trả về kiểu bool (true: tồn tại, false: không tồn tại) |
GetCreationTime() | Get / Set ngày giờ tạo thư mục (作成時間) |
SetCreationTime() | |
GetCurrentDirectory() | Get / Set thư mục hiện hành. |
SetCurrentDirectory() | |
GetDirectories() | Trả về một array các folder con của một folder. |
GetDirectoryRoot() | Trả về folder gốc của đường dẫn. |
GetFiles() | Trả về một array tên các files có trong folder. |
GetLastAccessTime() | Get / Set ngày giờ của lần truy cập cuối cùng đến folder. |
SetLastAccessTime() | |
GetLastWriteTime() | Get / Set ngày giờ folder được chỉnh sửa cuối cùng (更新時間) |
SetLastWriteTime() | |
GetLogicalDrives() | Trả về tên của tất cả các disk logic theo định dạng <ổ_đĩa>:\ |
GetParent() | Trả về folder cha của một đường dẫn. |
Move() | Di chuyển folder (bao gồm cả nội dung) đến một vị trí khác. |
Một số Method / Property của class DirectoryInfo
Method / Property | Ý nghĩa | Attributes | Get / Set thuộc tính của file hoặc directory hiện tại. | CreationTime | Get / Set thời gian tạo file hoặc directory hiện tại. | Exists | Trả về true: tồn tại, false: không tồn tại. |
Extension | Lấy chuỗi đại diện cho phần mở rộng của file. |
FullName | Lấy đường dẫn đầy đủ của file hoặc directory. |
LastAccessTime | Get / Set thời gian file hoặc directory hiện tại được truy cập lần cuối. |
LastWriteTime | Get / Set thời gian khi file hoặc directory hiện tại được ghi lần cuối. |
Name | Lấy tên thư mục (tên instace của DirectoryInfo) |
Parent | Lấy parent directory của một subdirectory cụ thể. |
Root | Lấy phần root của directory. |
Create() | Tạo directory. |
CreateSubdirectory() | Tạo subdirectory hoặc subdirectories cho path đã chỉ định. Đường dẫn đã chỉ định có thể liên quan đến instance của lớp DirectoryInfo. |
Delete() | Xóa System.IO.DirectoryInfo này nếu nó là empty. |
GetDirectories() | Trả về các thư mục con của thư mục hiện tại. |
GetFiles() | Trả về một danh sách files từ thư mục hiện tại. |
GetFileSystemInfos() | Trả về một mảng các đối tượng FileSystemInfo |
MoveTo() | Di chuyển instance DirectoryInfo và nội dung của nó sang một đường dẫn mới. |
Refresh() | Làm mới trạng thái của đối tượng. |
#3/3. Làm việc với tập tin
– Đối tượng của DirectoryInfo cũng trả về danh sách các đối tượng FileInfo là các files có trong thư mục. Các đối tượng FileInfo này mô tả thông tin về tập tin.
– Thư viện .NET cũng cung cấp 2 lớp File và FileInfo tương như đối với directory. Lớp File chỉ gồm các method static do đó có thể dùng trực tiếp bằng cách gọi member thông qua tên lớp, còn lớp FileInfo thì không có method static nào, do đó muốn dùng member của lớp này cần khởi tạo đối tượng.
Một số phương thức quan trọng của class File
Tên phương thức | Mô tả |
AppendText() | Tạo một StreamWriter nối thêm văn bản được mã hóa UTF-8 vào một file hiện có hoặc vào một file mới nếu file được chỉ định không tồn tại. |
AppendAllText() | Mở một file, nối thêm chuỗi đã chỉ định vào file và sau đó đóng file. Nếu file không tồn tại, phương thức này tạo một file, ghi chuỗi đã chỉ định vào file đó, sau đó đóng file. |
AppendAllLines() | Nối các dòng vào một file, rồi đóng file. Nếu file đã chỉ định không tồn tại, phương thức này sẽ tạo một file, ghi các dòng được chỉ định vào file đó và sau đó đóng file. |
Copy() | Sao chép file hiện có vào một file mới. Ghi đè một tập tin cùng tên không được phép. |
Create() | Tạo hoặc ghi đè file trong đường dẫn đã chỉ định. |
CreateText() | Tạo hoặc mở file để ghi dữ liệu với UTF-8 encoded. |
Delete() | Xóa file được chỉ định. |
Exists() | Trả về true: tồn tại, false: không tồn tại. |
GetAttributes() | Get / Set FileAttribution của file trên đường dẫn. |
SetAttributes() | |
GetCreationTime() | Get / Set ngày và thời gian tạo của file hoặc directory chỉ định. |
SetCreationTime() | |
GetLastAccessTime() | Get / Set ngày và thời gian truy cập lần cuối của file hoặc directory chỉ định. |
SetLastAccessTime() | |
GetLastWriteTime() | Get / Set ngày và thời gian được ghi lần cuối của file hoặc directory chỉ định. |
SetLastWriteTime() | |
Move() | Di chuyển file đã chỉ định đến một vị trí mới, có tùy chọn chỉ định tên file mới. |
Replace() | Thay thế nội dung của file được chỉ định bằng nội dung của file khác, xóa file gốc và tạo bản sao lưu của file đã thay thế. |
Open() | Mở FileStream trên đường dẫn đã chỉ định với quyền truy cập đọc / ghi. |
WriteAllText() | Tạo một file mới, ghi chuỗi đã chỉ định vào file và sau đó đóng file. Nếu file đã tồn tại, nó sẽ bị ghi đè. |
WriteAllLines() | Tạo một file mới, ghi dữ liệu vào file và sau đó đóng file. |
Một số Method / Property của class FileInfo
Method / Property | Ý nghĩa |
Attributes() | Get / Set thuộc tính của file hoặc directory hiện tại. |
CreationTime | Get / Set thời gian tạo của file hoặc directory hiện tại. |
Directory | Lấy một instance của parent directory. |
Exists | Trả về true: tồn tại, false: không tồn tại. |
Extension | Lấy chuỗi đại diện cho phần mở rộng của file. |
FullName | Lấy đường dẫn đầy đủ của file hoặc directory. |
LastAccessTime | Get / Set thời gian file hoặc directory hiện tại được truy cập lần cuối. |
LastWriteTime | Get / Set thời gian khi file hoặc directory hiện tại được ghi lần cuối. |
Length | Lấy kích thước tính bằng byte của file hiện tại. |
Name | Lấy tên file. |
AppendText() | Tạo một StreamWriter để thêm text (appends text) vào file được đại diện bởi instance của FileInfo. |
CopyTo() | Sao chép một file hiện có sang một file mới, không cho phép ghi đè lên file hiện có. |
Create() | Tạo file. |
Delete() | Xóa file vĩnh viễn. |
MoveTo() | Di chuyển một file đã chỉ định đến một vị trí mới, có tùy chọn chỉ định tên file mới. |
Replace() | Thay thế nội dung của một file đã chỉ định bằng file được mô tả bởi đối tượng FileInfo hiện tại, xóa file gốc và tạo bản sao lưu của file đã thay thế. |
Open() | Mở một file trong mode được chỉ định. |
OpenText() | Tạo StreamReader với mã hóa UTF8 đọc từ file văn bản hiện có. |
Có thể bạn quan tâm: Thao tác với đường dẫn Path và DriveInfo trong C#.
Em chào anh Ngọc Minh
Cám ơn anh về những thông tin những kiến thức của anh
Hiện tại em đang tìm hiểu về code ,em đang có 1 vấn đề cần anh giúp về C# trên winform
Em tạo 1 ứng dụng nhỏ chỉ có 3 nút để làm việc chính
Button 1 để xóa 1 thư mục trong thư mục đó nhiều thư mục con,trong thư mục con đó có nhiều file với nhiều định dạng khác nhau(txt,html,qps. Em muốn xóa hết chúng và không lưu lại ở thùng rác.
Button 2 cũng dùng để xóa 1 thư mục định dạng kiểu ngày 20190509 trong thư mục con ,thư mục con đó lại con thư mục con nữa,và con nữa trong con đó là nhiều file định dạng xml và txt .Em cũng muốn xóa chỉ để lại 3 ngày gần nhất đó.
Button 3 dùng để làm sạch thùng rác trong trường hợp xóa file xẽ move hết tới Recyle bin.
Giao diện thiết kế như này ạ.Em k copy được vào đây
Anh support em với ạ
Em cám ơn anh nhiều ạ
Anh chưa biết em đang bị khó khăn chỗ nào
AD cho e hỏi e muốn tạo 1 chương trình để xoá các file rác (ví dụ các file *.log, *.txt…) thì hàm nào có tác dụng như vậy a ?
Em dùng hàm File.Delete, check nếu file tồn tại thì xóa:
[…] csharp drive info lập trình FacebookTwitterPinterestLinkedIn Chia sẻ bộ font chữ tuyệt đẹp dành cho dịp lễ Giáng sinh Thao tác với tập tin và thư mục trong C# […]