Lập trình C#

Thao tác với tập tin và thư mục trong C#

Thao tác với tập tin và thư mục trong C#
Được viết bởi Minh Hoàng

Series lập trình C#, ngôn ngữ lập trình hiện đại và mạnh mẽ.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu về các class FileDirectory trong C#.
#1/3. Sơ đồ quan hệ thừa kế giữa các class:

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 DirectoryDirectoryInfo 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.

#1/2. Directory
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.
#2/2. DirectoryInfo
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 FileFileInfo 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.

#1/2. File
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.
#2/2. FileInfo
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#.

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

5 bình luận

  • 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 ạ

  • 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:

      if(File.Exists(@"C:\test.txt"))
      {
          File.Delete(@"C:\test.txt");
      }
Translate »